Вы не можете.
Лямбды являются экземплярами классов, а @Conditional
нужен сам класс.
Лямбда
Function<String, String> capitalize = text -> text.substring(0, 1).toUpperCase() + text.substring(1).toLowerCase();
Функционально идентична
Function<String, String> capitalize = new Function<String, String>() {
public String apply(String text) {
return Function<String, String> capitalize = text -> text.substring(0, 1).toUpperCase() + text.substring(1).toLowerCase();
}
};
Оба являются экземплярами анонимных классов, а не самим анонимным классом.Нет никакого способа фактически получить доступ к анонимным классам (за пределами отражения, но вы не можете использовать отражение в аннотациях).
Передача лямбды, где ожидается класс, будет похожа на передачу строки, где ожидается класс,Т.е. что-то вроде этого:
public @interface MyAnnotation {
Class<?> value();
}
@MyAnnotation("this is a string")
public class MyClass {
}
, что вы не ожидаете, что сработает.