私は、Cobol システムをモデル化しようとしている Java フレームワークで作業しています。多くの属性を持つクラス StudentRecord があります。
class StudentRecord extend BaseRecord {
...
public CobolString firstName;
public CobolString lastName;
...
}
class CobolString {
...
private String content;
public setValue(String str){
content = str;
}
}
String の firstName 値が「Max」である StudentRecord タイプのインスタンス studentA があるとします。Java リフレクションを使用して属性 firstName を「John」に更新したいと考えています。通常、私は以下のようにします。
Class aClass = studentA.class;
Field field = aClass.getField("firstName");
field.set(studentA, new CobolString("John"));
このフレームワークは Cobol をモデル化するためのものであるため、いくつかの奇妙な動作と要件があります。その 1 つは、CobolString のメソッド setValue() を使用して、システムが確実に機能するように firstName に新しい値を設定する必要があることです。
例:リフレクションなしでは、次のことを行う必要があります。
studentA.firstName.setValue("John");
リフレクションを使用して、そのようにコーディングすると、studentA にはまだ新しい firstName がありますが、他のオブジェクト/メソッドにとって見知らぬ人になり、他のオブジェクトと連携できなくなります!!!
では、Java リフレクションを使用して同じことを行い、firstName に新しい値を設定するにはどうすればよいでしょうか。親オブジェクトのstudentAからサブオブジェクトのfirstNameを取得し、新しい値「John」でメソッド「setValue」を呼び出す方法を意味します。
手伝ってくれてありがとう。