我有一个需要方法引用的方法:
expectsMethodRef(obj::someMethod);
Run Code Online (Sandbox Code Playgroud)
我现在只在编译时通过反射检索方法。如何从 Method 对象获取方法引用?
Method method = obj.class.getMethod(methodNameStr);
expectsMethodRef(<how to input my method here?>);
Run Code Online (Sandbox Code Playgroud)
您只需要使用Method.invoke. 下面是一个例子:
public class SomeObject{
public String someMethod(){
return "Test";
}
}
public String expectsMethodRef( Function<SomeObject, String> f ){
SomeObject so = new SomeObject();
return f.apply(so);
}
Run Code Online (Sandbox Code Playgroud)
这是您如何使用普通 lambda 和 Method 对象进行调用。
//plain lmbda
expectsMethodRef( SomeObject::someMethod );
//with method object
Method someMethod = SomeObject.class.getMethod("someMethod");
expectsMethodRef( (so) -> {
try {
return (String)someMethod.invoke(so);
} catch (Exception e) {
return null;
}
} );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
582 次 |
| 最近记录: |