Этому вопросу уже более 3 лет, и он конкретно адресован Java 8, причем принятый ответ также цитирует окончательную спецификацию Java SE 8.
Мне было бы интересно, изменится ли что-то в этом вопросе в Java 9: есть ли способ аннотировать лямбда-выражение, аналогично аннотированию соответствующего анонимного класса?
Пример:
Аннотация:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE_USE)
public @interface MyTypeAnnotation {
public String value();
}
Рабочая аннотация анонимного класса:
Consumer consumer = new @MyTypeAnnotation("Hello ") Consumer() {
@Override
public void accept(String str) {
System.out.println(str);
}
};
Аннотирование лямбда-выражения, в настоящее время не работает в Java 8:
Consumer myAnnotatedConsumer = @MyTypeAnnotation("Hello") (p -> System.out.println(p));