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

时间:2017-05-31 17:23:02

标签: java java-8 annotations

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

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

2 个答案:

答案 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说:

  

注释属性只能采用:bytechardoublefloatintlong,{{1} },shortbooleanString类型,EnumClass,1维数组类型Annotation

但必须将方法引用表达式分配给功能接口。所以你目前无法引用方法引用表达式。