Java 从静态方法引用获取类名
用什么替换foo() 抱歉说得太简短了。移动设备;)Java 从静态方法引用获取类名,java,reflection,Java,Reflection,用什么替换foo() 抱歉说得太简短了。移动设备;) 我不认为这是上述问题的重复,因为我想在包含静态方法的类之外获取名称。如果我尝试m.getClass().getName()我会得到“MethodIteration$$Lambda$1:[someHash]”恐怕你做不到。对Class1::method,Class2::method的调用被包装在实现MyFuncInt的lambda闭包中,该闭包没有方法访问包装的类(它甚至不是lambda类的声明字段) 我想说你不能使用功能接口。您必须创建一个函
我不认为这是上述问题的重复,因为我想在包含静态方法的类之外获取名称。如果我尝试
m.getClass().getName()
我会得到“MethodIteration$$Lambda$1:[someHash]”恐怕你做不到。对Class1::method
,Class2::method
的调用被包装在实现MyFuncInt
的lambda闭包中,该闭包没有方法访问包装的类(它甚至不是lambda类的声明字段)
我想说你不能使用功能接口。您必须创建一个函子,向其传递对该类的引用(或仅传递一个带有类名的字符串),以便以后检索它:
class MyFunctor implements MyFuncInt {
public final Class<?> clazz;
private final MyFuncInt func;
public MyFunctor(Class<?> clazz, MyFuncInt func) {
this.clazz = clazz;
this.func = func;
}
@Override
public void doSomething() {
func.doSomething();
}
}
恐怕你不能。对
Class1::method
,Class2::method
的调用被包装在实现MyFuncInt
的lambda闭包中,该闭包没有方法访问包装的类(它甚至不是lambda类的声明字段)
我想说你不能使用功能接口。您必须创建一个函子,向其传递对该类的引用(或仅传递一个带有类名的字符串),以便以后检索它:
class MyFunctor implements MyFuncInt {
public final Class<?> clazz;
private final MyFuncInt func;
public MyFunctor(Class<?> clazz, MyFuncInt func) {
this.clazz = clazz;
this.func = func;
}
@Override
public void doSomething() {
func.doSomething();
}
}
这是“令人害怕”但谢谢:)这是“令人害怕”但谢谢:)
new MyFunctor(Class1.class, Class1::method);