最近我开始乱搞一点反思。我遇到了一个无法找到答案的问题。我会尽力解释问题所在。
首先,我有一个方法,我从带有注释的反射中获得。当我尝试调用这个方法时,我需要一个它所在的类的实例。这就是我所做的,因为它在我的项目中最容易做到:
method.invoke(method.getClass().newInstance(), context);
然而,这不起作用。此方法抛出的异常是 NoSuchMethodException 。 但是当我试图直接获得名为 someClass 的类时,它没有抛出异常并成功返回该方法:
method.invoke(someClass.class.newInstance(), context);
我希望有经验的人可以清除这一点,以便我可以从中学习,并希望将来更容易使用反思。
提前致谢
-DutchJelly
答案 0 :(得分:2)
method.getClass()
返回Method.class
,Method
的类对象。这就像例如"ABC".getClass()
会返回String.class
。
您可能正在寻找的是method.getDeclaringClass()
。