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