Java Reflectonを理解しようとしていて、非整数セッターメソッドを扱うときに問題が発生しました。Java Reflectionクラスの型を持つgetDeclaredMethod()クラス
例として、以下の「getDeclaredMethod()」コールを解決するにはどうすればよいですか? String
上class
を使用して
import java.lang.reflect.*;
class Target {
String value;
public Target() { this.value = new String("."); }
public void setValue(String value) { this.value = value; }
public String getValue() { return this.value; }
}
class ReflectionTest {
public static void main(String args[]) {
try {
Class myTarget = Class.forName("Target");
Method myMethod;
myMethod = myTarget.getDeclaredMethod("getValue"); // Works!
System.out.println("Method Name: " + myMethod.toString());
Class params[] = new Class[1];
//params[0] = String.TYPE; // ?? What is the appropriate Class TYPE?
myMethod = myTarget.getDeclaredMethod("setValue", params); // ? Help ?
System.out.println("Method Name: " + myMethod.toString());
} catch (Exception e) {
System.out.println("ERROR");
}
}
}
私はあなたのためにどのようなシナリオでクラスと変数にどのメソッドが含まれているかを知ろうとしますか?なぜ私はそれを知ろうとしますか?私は、このメソッドgetDeclaredMethod()、getDeclaredFields()などを使用する理由を探求しています... – gmhk
を提案してください。リフレクションを使用する理由は、Jsonの直列化/逆シリアル化ライブラリを構築する場合です。よく知られているGoogle Gsonライブラリは、自分の仕事を達成するために反射を頻繁に使います。 このような使用例は永遠に続く可能性があります。たとえば、さまざまなJavaオブジェクトのプロパティをシリアル化して別のアプリケーションまたは別の言語に基づいてサーバーに送信するネットワーク・プロトコルを構築して、必要なすべてのクラスに対して直列化メソッドを実装する必要がないという膨大な時間を節約できます交換。 –