2

ユーザーが指定するメソッドの名前を表す文字列をキーとして保持し、実際のメソッド呼び出しを値として文字列として保持するハッシュテーブルを作成しました。私が使用しているコードはここにあります:

public void getMethod(String givenMethod){

    Map<String, String> methods = new HashMap<String, String>();
    methods.put("length", "length();");

    methods.get(givenMethod);

}

メインメソッドからobjectX.getMethod( "length");を呼び出しますが、メソッドlength(); 実行されません。誰かが私を助けてくれますか?

4

3 に答える 3

3

メソッドを取得していますが、呼び出していません。次のようなことをする必要があります。

Method yourMethod = objectX.getClass().getDeclaredMethod("yourMethodName"); //This is the string that represents the name of the method.

次に、メソッドを呼び出します。このすべてを振り返って:

yourMethod.invoke(YourObject);

invokeメソッドのパラメーターは、最初にオブジェクトであり、次に属性です。

メソッドを呼び出すとオブジェクト型メソッドになるため、メソッドの戻り型を取得して結果をキャストすることもできます。

yourMethod.getReturnType(); //This line gives you the type returned by your method.
于 2012-05-10T20:05:24.270 に答える
2

Java **reflectionを使用して、メソッドをその名前で呼び出し
ます(メソッド名をマップに格納していると言ったように)。
詳細については、次の記事を参照してください:http: //java.sun.com/developer/technicalArticles/ALT/Reflection/

于 2012-05-10T20:25:55.470 に答える
1

名前でメソッドを呼び出すには、リフレクションを使用する必要があります。したがって、データ構造は次のようになります。

Map<String, Method> meth = new Hashmap<String,Method>();

ここで、 Methodは実際のオブジェクトです。

于 2012-05-10T20:02:47.937 に答える