2012-02-20 26 views
3

假设如下。有一些超类或接口声明了一些方法:Base.doSmth()。还有一些实现此方法的继承类:Inherited.doSmth()。我们有Inherited.doSmth()的反思(Method),我们知道什么是基类,以便我们可以访问它的反射(Base.class)。问题是:如何获得Base.doSmth()方法的思考?当然,我们可以遍历Base的所有方法,并通过名称,参数和返回类型找到一个,但是可能已经有一些解决方案了。所有事情都发生在Spring相关的类中,所以代码已经与Spring耦合,因此使用它的实用工具是可以的。如何获取在特定父类中声明的方法?

谢谢。

回答

0

您可以使用public native Class<? super T> getSuperclass();访问超类元数据,然后使用public Method[] getMethods() throws SecurityException访问其元数据方法。

+0

这当然是可以的,但我认为可以使用一些Spring util-method,这使得这个工作成为可能,例如'org.springframework.aop.support.AopUtils.getMostSpecificMethod()'。 – 2012-02-20 08:44:18

+1

哦,Spring没有任何实用方法(可能我不知道),但Apache Commons Lang3有一个带有ClassUtils名称的实用程序类,并且此类具有getAllSuperclasses方法和其他有用的方法,可能对您有用。 – MJM 2012-02-20 08:51:28

+0

感谢MJM,我将调查Apache Commons Lang,否则手动迭代'Method []'数组。 – 2012-02-20 08:53:18

相关问题