2011-12-05 6 views
3

を持つメソッドをフィルタリングするために、私はクラスのすべてのメソッドを取得しますが、このようなとして継承されたメソッド除外したい:私はそれを行うための方法で構築または実行待たを、のtoString、ハッシュなどどのようにJavaのリフレクション

ありますブラックリストを定義してメソッド名を確認する必要がありますか?

答えて

4

あなたは

for(Method method: clazz.getMethods()) { 
    if(method.getDeclaringClass() == Object.class) continue; 

} 

ノートのようなメソッドを無視することができます。これはサブクラスでオーバーライドされたメソッドが含まれます。あなたが任意の継承されたメソッドを使用しない場合は

あなたは現在のクラス(したがって、効果的に継承された除外するもの)によって定義されたメソッドを提供します

for(Method method: clazz.getDeclaredMethods()) { 
4

使用MyClass.getDeclaredMethods()

0

clazz.getDeclaredMethods()を使用することができます。しかし、典型的なパターンは、クラス階層 を歩き、オブジェクトからのものを除外することです。

0

これにはcollection commonsを使用できます。

あなただけのワット述語を宣言してから使用する必要がありますが

コレクションはメソッドのバッグです
CollectionUtils.filter(collection, predicate); 

。 述語は、リスト上の要素を受け入れる論理関数です

関連する問題