More precise annotation targets

LaMothe, Ryan R Ryan.LaMothe at pnnl.gov
Thu Oct 11 20:32:32 UTC 2018


While I agree with Brian's comments later in this thread on the below question, I'd like to expand on the question just a little: We've always wished we could annotate for loops, while loops, etc. so that we can handle them with custom back-end code/processing (e.g. parallelism, GPU, cluster queue, etc.). Has that already been attempted/proposed or is that something we would need to propose new?

____________________________________________
Ryan LaMothe 

-----Original Message-----
From: discuss [mailto:discuss-bounces at openjdk.java.net] On Behalf Of arjan tijms
Sent: Thursday, October 11, 2018 6:19 AM
To: discuss <discuss at openjdk.java.net>
Subject: More precise annotation targets

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