gpt4 book ai didi

java - 匿名类、私有(private)方法和反射

转载 作者:行者123 更新时间:2023-11-29 05:07:04 25 4
gpt4 key购买 nike

如果我创建一个带有私有(private)方法的匿名类,并尝试使用反射访问该方法,它将抛出 IllegalAccessException。但是,如果我在将对象保存到变量之前调用该对象的方法,它可以正常工作:

public class Z {
public static void main(String[] args) throws Exception {

Object obj = new Object(){private void foo(){}};
obj.getClass().getDeclaredMethod("foo").invoke(obj); // throws IllegalAccessException

new Object(){private void foo(){}}.foo(); // works
}
}

造成差异的原因是什么?

最佳答案

在第一种情况下,您试图通过反射访问该方法,由于它是一个私有(private)方法,反射器类无法调用它,因此它会抛出一个 IllegalAccessException

在第二种情况下,您直接访问该方法,并且您可以这样做,因为它是 Z 的匿名内部类,并且您在 Z 中访问它 类。

关于java - 匿名类、私有(private)方法和反射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30016410/

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