This question现在已经超过3年,专门针对Java 8,接受的答案也引用了Java SE 8 Final Specification。是否有可能在Java 9中注释lambda表达式?
如果关于这个问题的某些事情会在Java 9中发生变化,我会感兴趣的:有什么办法来注释类似于注释相应的匿名类的lambda表达式吗?
实施例:
译注:
Consumer<String> consumer = new @MyTypeAnnotation("Hello ") Consumer<String>() {
@Override
public void accept(String str) {
System.out.println(str);
}
};
注解一个兰巴表达,目前没有在Java中5-8:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE_USE)
public @interface MyTypeAnnotation {
public String value();
}
工作匿名类的注释
Consumer<String> myAnnotatedConsumer = @MyTypeAnnotation("Hello") (p -> System.out.println(p));
这两个构造之间的一个重要区别是匿名类仍然是一个类的声明。lambda表达式不会创建新类(或者不一定,如果它是实现细节)。我有这样的印象:只有*声明才允许注释*。 *表达式*允许注释吗? – Lii