我想将方法传递给注释。这样的事情可能吗?
@MyAnnotation(method = MyClass::myMethod)
private String myVariable;
答案 0 :(得分:10)
传递方法不是一种选择。相反,传递以下内容,以便您可以使用反射找到方法。
@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());
答案 1 :(得分:1)
JSL说:
注释属性只能采用:
byte
,char
,double
,float
,int
,long
,{{1} },short
,boolean
,String
类型,Enum
,Class
,1维数组类型Annotation
。
但必须将方法引用表达式分配给功能接口。所以你目前无法引用方法引用表达式。