Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从静态方法引用获取类名_Java_Reflection - Fatal编程技术网

Java 从静态方法引用获取类名

Java 从静态方法引用获取类名,java,reflection,Java,Reflection,用什么替换foo() 抱歉说得太简短了。移动设备;) 我不认为这是上述问题的重复,因为我想在包含静态方法的类之外获取名称。如果我尝试m.getClass().getName()我会得到“MethodIteration$$Lambda$1:[someHash]”恐怕你做不到。对Class1::method,Class2::method的调用被包装在实现MyFuncInt的lambda闭包中,该闭包没有方法访问包装的类(它甚至不是lambda类的声明字段) 我想说你不能使用功能接口。您必须创建一个函

用什么替换foo()

抱歉说得太简短了。移动设备;)


我不认为这是上述问题的重复,因为我想在包含静态方法的类之外获取名称。如果我尝试
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);