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

时间:2018-06-12 22:35:57

标签: java reflection

最近我开始乱搞一点反思。我遇到了一个无法找到答案的问题。我会尽力解释问题所在。

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

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

然而,这不起作用。此方法抛出的异常是 NoSuchMethodException 。 但是当我试图直接获得名为 someClass 的类时,它没有抛出异常并成功返回该方法:

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

我希望有经验的人可以清除这一点,以便我可以从中学习,并希望将来更容易使用反思。

提前致谢

-DutchJelly

1 个答案:

答案 0 :(得分:2)

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

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