gpt4 book ai didi

java - 如何使用反射从外部获取对匿名内部类方法 'helloWorld' 的引用

转载 作者:行者123 更新时间:2023-11-30 06:08:46 27 4
gpt4 key购买 nike

下面是我的示例类。正如您所看到的,我定义了一个类 InnerClass 并在 main 方法中创建了它的一个实例。但我没有使用普通声明,而是使用基类中不存在的方法声明了它的匿名内部类。

现在我知道,如果我在 InnerClass 中声明 helloWorld(),那么我可以在通过匿名内部类创建的实例上访问此方法。

但我想知道,是否可以在代码中的基类中声明的情况下调用此方法。我尝试探索反射 API,但没有任何运气

import java.lang.reflect.Method;

public class InnerClass {
int i = 10;

public static void main(String[] args) {
InnerClass inner = new InnerClass() {
void helloWorld() {
System.out.println("Hello");
System.out.println(this.getClass().getEnclosingMethod());
}
};
System.out.println(inner.getClass().getEnclosingMethod());
Method[] method = inner.getClass().getDeclaredMethods();

// Call helloworld method here

for (Method me : method) {
System.out.println(me.getName());
}
}
}

最佳答案

getDeclaredMethod 检索可以使用 invoke 执行的方法:

Method method = inner.getClass().getDeclaredMethod("helloWorld");
method.invoke(inner);

关于java - 如何使用反射从外部获取对匿名内部类方法 'helloWorld' 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50691689/

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