gpt4 book ai didi

java - method.getClass().newInstance() 和 SomeClass.class.newInstance() 之间的区别?

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

最近我开始尝试一点反射(reflection)。我遇到了一个找不到任何答案的问题。我会尽力解释问题所在。

首先,我有一个从带有注释的反射中获得的方法。当我尝试调用这个方法时,我当然需要它所在类的一个实例。这就是我所做的,因为这在我的项目中是最容易做的:

method.invoke(method.getClass().newInstance(), context);

但是,这并没有奏效。此方法抛出的异常是NoSuchMethodException。但是,当我尝试直接获取包含该方法的名为 someClass 的类时,它没有抛出异常并成功返回该方法:

method.invoke(someClass.class.newInstance(), context);

我希望更有经验的人能够澄清这一点,以便我可以从中学习,并希望将来能够更轻松地使用反射。

提前致谢

-荷兰果冻

最佳答案

method.getClass() 返回 Method.class,即 Method 的类对象。这就像例如"ABC".getClass() 返回 String.class

您可能正在寻找的是 method.getDeclaringClass() .

关于java - method.getClass().newInstance() 和 SomeClass.class.newInstance() 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50826770/

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