如何使用 Java 8 将方法传递给注解?
2022-09-04 19:33:12
我想将方法传递给注释。这样的事情可能吗?
@MyAnnotation(method = MyClass::myMethod)
private String myVariable;
我想将方法传递给注释。这样的事情可能吗?
@MyAnnotation(method = MyClass::myMethod)
private String myVariable;
传递方法不是一个选项。相反,请传递以下内容,这应该允许您使用反射查找方法。
@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());
JSL 说:
注释属性只能采用: 、 、 、 类型、 、 、 1 维数组类型。
byte
char
double
float
int
long
short
boolean
String
Enum
Class
Annotation
[type
但是必须将方法引用表达式分配给功能接口。因此,您目前无法引用方法引用表达式。