More precise annotation targets
arjan tijms
arjan.tijms at gmail.com
Thu Oct 11 13:18:54 UTC 2018
Hi,
I wonder if the following would make sense to consider for a Java language
enhancement:
Annotations can currently be targeted
to TYPE, FIELD, METHOD, TYPE_PARAMETER etc.
For lots of cases this is fine, but in other case you need a bit more
detail. For instance, consider an @ActionEvent annotation that targets
METHOD, but actually can only be applied on methods with a specific
signature such as void method(Action); and void method();
You might want to have correct placement of the annotation expressed in a
little more exact way, like e.g.
@Target(METHOD)
@TargetMethods( {ActionInterface.class, ActionInterface2.class})
@Retention(RUNTIME)
public @interface ActionEvent {}
With ActionInterface.class and ActionInterface2.class both functional
classes.
Alternatively:
@Target(METHOD)
@TargetMethods( {
@MethodSignature(
return=Void.class, arguments=Action.class),
@MethodSignature(
return=Void.class)}
}
@Retention(RUNTIME)
public @interface ActionEvent {}
The syntax used is just illustrative of the idea.
Thoughts?
Kind regards,
Arjan
More information about the discuss
mailing list