Annotating lambda expressions

Remi Forax forax at univ-mlv.fr
Fri Jul 10 09:29:07 UTC 2015


On 07/10/2015 10:43 AM, Ron Pressler wrote:
> (Related to 
> http://mail.openjdk.java.net/pipermail/compiler-dev/2015-January/009220.html) 
>
>
> It is useful to add an annotation to a lambda expression -- as in 
> foo(@Special () -> { ...}) -- which will be applied to the static 
> method implementing the lambda (not to the interface the lambda 
> implements). This would allow instrumentation tools operating on 
> method implementations to handle lambdas. So far, AFAICT, this is not 
> possible (or am I wrong?).

You're right you can not annotate a lambda expression.

>
> Opinions?

You can not annotate an expression in Java thus you can not annotate a 
lambda expression.

In Java, unlike say in Ruby or in Lisp, there is a clear distinction 
between the declaration part of the language and the executable part. 
Historically (Java 5), annotations was reserved to the declaration part 
of the language.
This was later expended to allow to annotate types in order to support 
"pluggable type system" in Java 8 (see the JSR 308).

As far as i know, during the initial introduction of annotations and 
during the JSR 308, the question of adding annotations on expressions 
was raised and rejected by doing a cost/benefit analysis.

>
> Ron

Rémi



More information about the compiler-dev mailing list