获取函数引用的注释

时间:2014-12-30 16:50:38

标签: java lambda annotations java-8

我想这样做:

foo(functionOfSomeObject)
{
    call functionOfSomeObject;
    get some annotations of functionOfSomeObject;
}

我不想使用Method类来传递functionOfSomeObject,因为这必须通过字符串/反射来检索。相反,我想使用功能接口和lambda表达式,如myObject::method。但有没有办法用这种方法获得方法注释?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您的foo方法会收到某种类型的值。给定

void foo(FunctionalInterface func) {}

您可以通过多种方式调用它

foo(SomeType::someMethod);
foo(() -> {});
foo(new SomeImpl());

foo的主体内,没有办法(也不应该)知道如何生成参数值。通过提供lambda或方法引用,您没有做任何 extra

使用反射来获取所需的信息。请注意,使用方法引用时,编译器会将其包装到功能接口提供的方法中,因此您基本上会丢失引用的方法(从反射的角度来看)。您需要在foo之外执行此操作,您实际上可以访问该方法。