2012-02-20 70 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