2

次のような問題があります: MyFirstClass.java

public class MyFirstClass{
  String strParam;
  MySecondClass secClass;
  //getters and setters
}

MySecondClass.java

public class MySecondClass{
  String p1Param;
  String p2Param;
  String p3Param;
  String p4Param;
//setters and getters
}

TestClass.java

public void doProcessing(MyFirstClass pObj){
  for(int i=0;i<3;i++){
  System.out.println() ;
  //###question is here
}

Java リフレクションを使用し、g にパラメーターを提供して for ループで pObj.getP**Param() メソッドを呼び出したい

Method m= cls.getMethod("getP"+(i+1)+"Param");
pObj.getSecClass.[ invokeMethod m ]

それを可能にする方法。p*Params の配列を使用したくありません。

前もって感謝します。

4

3 に答える 3

2

これはあなたが必要とするものだと確信していますか?私にとって、あなたのコードは、すべてのタスクでリフレクションを悪用する現在の傾向の典型的な例のようです。配列やマップを使用してプロパティを保存しないのはなぜですかp[0-9]+Param

配列はまさにそれを行うために発明されました。それらは、数値でインデックス付けされた一連の変数を提供します。

于 2011-05-04T09:17:10.373 に答える
1

あなたはほとんどそこにいます。オブジェクトを取得したら、次のMethodように呼び出します。

String param = (String) m.invoke(pObj.getSecClass());

このようなリフレクション ゲームは、把握しにくく複雑なコードになり、保守が困難になる可能性があることに注意してください。番号付きのパラメーターが何を表しているかを教えていただければ、より良い解決策を提供できます (おそらく ? である単一のパラメーターList<String>)。

于 2011-05-04T08:58:55.880 に答える
0

このような:

Object result = m.invoke(pObj.getSecClass)
于 2011-05-04T09:00:15.763 に答える