Java 方法.getClass().newInstance()和SomeClass.class.newInstance()之间的差异?

Java 方法.getClass().newInstance()和SomeClass.class.newInstance()之间的差异?,java,reflection,Java,Reflection,最近我开始有点胡思乱想。我遇到了一个我找不到任何答案的问题。我会尽力解释问题所在 首先,我有一个从反射中得到的方法,它有一个注释。当我试图调用这个方法时,我当然需要它所在的类的一个实例。这是我所做的,因为在我的项目中,这是最容易做到的: method.invoke(method.getClass().newInstance(), context); 然而,这并没有起作用。使用此方法引发的异常是NoSuchMethodException。 但是,当我尝试直接获取包含该方法的名为someClass

最近我开始有点胡思乱想。我遇到了一个我找不到任何答案的问题。我会尽力解释问题所在

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

method.invoke(method.getClass().newInstance(), context);
然而,这并没有起作用。使用此方法引发的异常是NoSuchMethodException。 但是,当我尝试直接获取包含该方法的名为someClass的类时,它没有引发异常并成功返回该方法:

method.invoke(someClass.class.newInstance(), context);
我希望有更有经验的人可以澄清这一点,这样我就可以从中学习,并希望在将来更轻松地使用反射

提前谢谢

-DutchJelly

method.getClass()
返回
method.class
,即
method
的类对象。这与例如
“ABC.getClass()
返回
String.class
的方式类似


您可能正在查找的是。

method.getClass()
获取的是
method.class
,而不是该方法所属的类。它在反射类上进行反射。一个方法有一个类吗?我以为它只属于一个类。
方法
方法
类的一个实例。反射使您将方法视为对象。当您调用method.getClass()方法时,它是
java.lang.reflect.method
类的对象,因此您将得到它。不如试着测试一下你的
方法.getClass()返回了什么?啊,谢谢。这帮助我理解了更多的思考。也许你也可以正式回复帖子,这样其他人就可以更容易地看到这一点。很抱歉,这个问题看起来很愚蠢。