gpt4 book ai didi

java - 从静态方法引用获取类名

转载 作者:太空宇宙 更新时间:2023-11-04 12:43:24 27 4
gpt4 key购买 nike

用什么替换 foo() ?

class MethodIteration {
public static void main(String[] args) {
for (MyFuncInt m : new MyFuncInt[] { Class1::method, Class2::method })
System.out.println(m.getClass().foo()); // want Class1, Class2 etc here
}
}

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

我认为这不是上述问题的重复,因为我想在包含静态方法的类之外获取名称。如果我尝试m.getClass().getName()我得到“MethodIteration$$Lambda$1:[someHash]”。

最佳答案

恐怕你不能。对 Class1::methodClass2::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);

关于java - 从静态方法引用获取类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36594181/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com