メンバー変数を持つクラスがメンバー変数を持つ別のクラスであるとします。どちらのクラスの各変数の値を取得するには?Javaリフレクションサブクラスの変数値を取得する/メンバフィールドからオブジェクトインスタンスを取得する
getDeclaredFields();
を呼び出して変数を取得できます。また、field.get(obj)
を呼び出すことでFooオブジェクトの値を呼び出し、サブクラス変数を取得するために再度反復します。
しかし、そのクラスのインスタンスがなくても、どのように各サブクラスメンバ変数の値を取得できますか? 変数はBar
クラスのインスタンスごとに同じであり、私は私が何とかフィールドからオブジェクトのインスタンスを取得することができれば、それは仕事ができると思いますinnerField.get(new Bar())
を呼び出すことができますので、私の簡単な例が働きますか?事前に
おかげ
第一の目的:
public class Foo {
public Foo(){}
private Integer someInt = 123;
private Long someLong = 987654321L;
private String someString = "qwertyuiop";
private Bar bar = new Bar();
}
第二の目的:
public class Bar {
public Bar(){}
private Double someDouble = 123.456;
private String innerString = "another String";
}
メイン/呼び出し方法:
public static void main(String[] args) throws Exception {
Foo foo = new Foo();
getMemberFields(foo);
}
変数と値を取得する:
obj: class Foo
Field: someInt value: 123
Field: someLong value: 987654321
Field: someString value: qwertyuiop
Field: bar value: [email protected]
Sub Field: someDouble
Sub Field value: 123.456
Sub Field: innerString
Sub Field value: another String