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