0

これには、StackOverflow や他のサイトで見つけたすべての提案を使用しました。リフレクションを使用してメソッドを呼び出そうとしています。私のメソッドのコードは次のとおりです。

public void my_method(String[] args) {

    for(int i=0; i<args.length; i++)
    {
        System.out.println(args);
    }
}

リフレクションに使用したコードは次のとおりです

Class[] paramStringArray = new Class[1];    
paramStringArray[0] = String[].class;
String[] argu = {"hey", "there"};

Method method = cls.getDeclaredMethod("my_method", paramStringArray);
method.invoke(obj, new Object[]{argu});

私の問題は、プログラムを実行すると、出力が [Ljava.lang.String;@70a6aa31 [Ljava.lang.String;@70a6aa31] として表示されることです。

私は見つけることができるすべての提案を試しました。誰かがこれで私を助けてくれますか?

ありがとう!

4

2 に答える 2

1

このメソッドmy_method()は、パラメーターとして aString[]ではなく aを受け取りますString。別のメソッドを呼び出しています。コードは次のようになります。

paramString[0] = String[].class;
Method method = cls.getDeclaredMethod("my_method", paramString);

それを呼び出すには、String[]パラメーターとして渡します。

method.invoke(obj, new String[]{"x"});

また、ループの本体はmy_method()、配列自体ではなく、各要素の位置を参照する必要があります。

System.out.println(args[i]);
于 2013-07-24T20:05:32.670 に答える