我想这样做:
foo(functionOfSomeObject)
{
call functionOfSomeObject;
get some annotations of functionOfSomeObject;
}
我不想使用Method
类来传递functionOfSomeObject
,因为这必须通过字符串/反射来检索。相反,我想使用功能接口和lambda表达式,如myObject::method
。但有没有办法用这种方法获得方法注释?
感谢您的帮助!
答案 0 :(得分:2)
您的foo
方法会收到某种类型的值。给定
void foo(FunctionalInterface func) {}
您可以通过多种方式调用它
foo(SomeType::someMethod);
foo(() -> {});
foo(new SomeImpl());
在foo
的主体内,没有办法(也不应该)知道如何生成参数值。通过提供lambda或方法引用,您没有做任何 extra 。
使用反射来获取所需的信息。请注意,使用方法引用时,编译器会将其包装到功能接口提供的方法中,因此您基本上会丢失引用的方法(从反射的角度来看)。您需要在foo
之外执行此操作,您实际上可以访问该方法。