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

标签 java reflection

最近我开始尝试一点反射(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/

相关文章:

java - 如何将dataframe src目录添加到java项目中

reflection - 我不明白Dart镜子中 “isSubtypeOf”的工作方式

java - JButton 图标有点偏离

java - 从 String.split 返回的 String 包含部分匹配元素

java - 如何在不阻塞的情况下从 Executors 中捕获 RuntimeExceptions?

reflection - 如何发现abap开发对象的属性?

c# - 您如何反射(reflection)应用于返回值的属性?

php - 来自文件的反射类 PHP?

c# - 使用反射调用 DLL,但所需的另一个 DLL 抛出异常

java - 未注解的方法会覆盖使用@NotNull 注解的方法