2012-02-20 14 views
3

次のように仮定します。あるメソッドを宣言するいくつかのスーパークラスまたはインタフェースがあります:Base.doSmth()。このメソッドを実装するいくつかの継承クラスもあります:Inherited.doSmth()Inherited.doSmth()のリフレクション(Method)があり、リフレクションにアクセスできるように基本クラスがわかります(Base.class)。問題は、Base.doSmth()メソッドでリフレクションを取得する方法ですか?もちろん、Baseのすべてのメソッドを繰り返し処理することができ、名前、パラメータ、および戻り値の型で1つを見つけることができますが、すでに解決策がいくつかあります。すべてはSpring関連のクラスで発生するので、コードはすでにSpringに結合されているので、ユーティリティを使用することはOKです。特定の親クラスで宣言されたメソッドを取得する方法は?

ありがとうございました。

答えて

0

スーパークラスのメタデータへのアクセスにはpublic native Class<? super T> getSuperclass();を使用し、メソッドのメタデータへのアクセスにはpublic Method[] getMethods() throws SecurityExceptionを使用できます。

+0

もちろん、これはOKですが、私は、org.springframework.aop.support.AopUtils.getMostSpecificMethod()のように、この作業を行ういくつかのSpring util-methodがあると思います。 –

+1

ああ、春には(私は知らないかもしれませんが)ユーティリティメソッドがありませんが、Apache Commons Lang3にはClassUtilsという名前のユーティリティクラスがあり、このクラスにはgetAllSuperclassesというメソッドがあります。 。 – MJM

+0

ありがとうMJM、私はApache Commons Langを調べます。それ以外の場合は、手動で 'Method []'配列を繰り返し実行します。 –