One reason potentially speaking against RUNTIME is that any attributes
of the annotation would be retained as well, e.g. Strings with a
description. So it'd consume a tiny bit of memory which is not needed
by the user application.
Btw. there is a related JEP (
http://openjdk.java.net/jeps/277) which
aims at generalising the existing @Deprecated annotation for purposes
like this. It suggests to add attributes to @Deprecated for expressing
the deprecation reason and an enum with possible causes. One being
EXPERIMENTAL:
@Deprecated(EXPERIMENTAL)
void myNewApi() { ... }
No idea though whether/when it will be part of Java, it's not listed
in the Java 9 JEPs at
http://openjdk.java.net/projects/jdk9/.
Interestingly, @Deprecated has RUNTIME retention which may be the
reason that they don't propose to add a String attribute such as
description() as part of that JEP.
2016-01-29 19:19 GMT+01:00 Steve Ebersole <steve(a)hibernate.org>:
I don't have anything specific in mind. Just more of a general
thought
process, since its the first annotation of this type I am adding.
On Fri, Jan 29, 2016 at 12:11 PM Sanne Grinovero <sanne(a)hibernate.org>
wrote:
>
> I would think that such a tool would work at compile time rather than
> reflectively at runtime, but one can't be sure of course so it depends
> on what you have in mind.
>
> I'd also say make @Incubating with CLASS retention, it's more than
> what people had before.. you can always evolve it later if someone
> come with a brilliant use case which requires more.
>
>
> On 29 January 2016 at 18:06, Steve Ebersole <steve(a)hibernate.org> wrote:
> > I personally do not in terms of usage from ORM, nor in usage by ORM
> > users
> > either. I do wonder about tooling though. Like would it be useful for a
> > tool to see an implementation of an @Incubating contract being used and
> > warn the user?
> >
> > On Fri, Jan 29, 2016, 12:02 PM Gunnar Morling <gunnar(a)hibernate.org>
> > wrote:
> >
> >> Do you see any use case for accessing it reflectively at runtime?
> >>
> >> FWIW, OGM's @Experimental has CLASS retention, which I think is
> >> "enough retention" for its purpose.
> >>
> >> 2016-01-29 18:50 GMT+01:00 Steve Ebersole <steve(a)hibernate.org>:
> >> > Per HHH-10487[1], I want to add an @Incubating annotation to mark
> >> > APIs
> >> that
> >> > are still incubating. Specifically, what do y'all think of
> >> > `java.lang.annotation.RetentionPolicy#CLASS` versus
> >> > `java.lang.annotation.RetentionPolicy#RUNTIME`?
> >> >
> >> > [1]
https://hibernate.atlassian.net/browse/HHH-10487
> >> > _______________________________________________
> >> > hibernate-dev mailing list
> >> > hibernate-dev(a)lists.jboss.org
> >> >
https://lists.jboss.org/mailman/listinfo/hibernate-dev
> >>
> > _______________________________________________
> > hibernate-dev mailing list
> > hibernate-dev(a)lists.jboss.org
> >
https://lists.jboss.org/mailman/listinfo/hibernate-dev