2016-04-19 8 views
1

javaファイルから呼び出せるjavaクラスのすべてのメソッドのリストを取得する方法が必要です。私はClass.getMethodsを使用できることを知っているが、私はそれを必要とするように、それはいくつかの状況では動作しません:Javaソースコードから呼び出すことができるクラスのメソッドのリストを取得する

public interface IField<T> { 
    public void setValue(T value); 
} 

public class Field implements IField<String> { 
    private String value; 

    @Override 
    public void setValue(String value) { 
     this.value = value; 
    } 
} 

Field.class.getMethods()setValue方法に含まれている呼び出しが、Stringパラメータを持つ一方のみから呼び出されることを許可しますjavaソースファイル。両方setValueメソッドが呼び出されしても大丈夫です

public abstract class AbstractBean { 
    private Object value; 

    public void setValue(Object value) { 
     this.value = value; 
    } 
} 

public class Field extends AbstractBean { 
    private Integer value; 

    public void setValue(Integer value) { 
     this.value = value; 
    }; 
} 

:このような状況があるかもしれませんbecasue

ただ、「あまり具体的な」パラメータで1を削除するにも解決策ではありません。

+0

を介してbridgeのメソッドをフィルタリングしなければなりません。また、 'Field'のスーパークラスをループしたいかもしれません。 – SomeJavaGuy

+1

これは、タイプ消去のために機能しません。 –

+0

これはあなたにいくつかのポインタを与える必要があります:http://stackoverflow.com/questions/14841952/getting-declared-methods-java –

答えて