如何使用 Java 8 将方法传递给注解?

2022-09-04 19:33:12

我想将方法传递给注释。这样的事情可能吗?

@MyAnnotation(method = MyClass::myMethod)
private String myVariable;

答案 1

传递方法不是一个选项。相反,请传递以下内容,这应该允许您使用反射查找方法。

@MyAnnotation(clazz=String.class, method="contains", params= {CharSequence.class})

@interface MyAnnotation {
   Class<?> clazz();
   String method();
   Class<?>[] params() default {};
}

MyAnnotation annotation = // get the annotation
annotation.clazz().getMethod(annotation.method(), annotation.params());

答案 2

JSL 说:

注释属性只能采用: 、 、 、 类型、 、 、 1 维数组类型。bytechardoublefloatintlongshortbooleanStringEnumClassAnnotation[type

但是必须将方法引用表达式分配给功能接口。因此,您目前无法引用方法引用表达式。


推荐