Javaでオブジェクトの値を順番に取得する方法
Javaでは、オブジェクトの値を次に示すように順番に取得できます。
- オブジェクトのプロパティ名を使用する:
- オブジェクトのプロパティが public のとき、オブジェクト名.プロパティ名という形でプロパティの値にアクセスできます。たとえば、obj.property
- オブジェクトのプロパティーがプライベートな場合は、オブジェクトのgetterメソッドを利用してプロパティーの値を取得する。例:obj.getProperty()。
- 対象を使う方法
- オブジェクトにあるメソッドが定義されている場合は、そのメソッドを呼び出すことでオブジェクトの値を取得できます。例えば、obj.method()。
- 反射APIを使用する
- リフレクションAPIは、オブジェクトのプロパティやメソッドを動的に取得するためのメカニズムを提供します。オブジェクトのプロパティ値を取得するにはリフレクションAPIのgetDeclaredField()メソッドを使用でき、オブジェクトのメソッド値を取得するにはgetDeclaredMethod()メソッドを使用できます。
オブジェクトの値を順番に取得する方法を示すサンプルコードを以下に示します。
public class MyClass {
private String name;
private int age;
public MyClass(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) throws Exception {
MyClass obj = new MyClass("John", 25);
// 使用对象的属性名获取属性值
System.out.println(obj.name);
System.out.println(obj.age);
// 使用对象的getter方法获取属性值
System.out.println(obj.getName());
System.out.println(obj.getAge());
// 使用反射API获取属性值
Class<?> clazz = obj.getClass();
Field nameField = clazz.getDeclaredField("name");
nameField.setAccessible(true);
System.out.println(nameField.get(obj));
Field ageField = clazz.getDeclaredField("age");
ageField.setAccessible(true);
System.out.println(ageField.get(obj));
}
}
出力がネイティヴな日本語で出ます。1つのオプションのみ必要です。
John
25
John
25
John
25
プライベートなプロパティの値をリフレクションAPIで取得する場合は、アクセス権を設定するためにsetAccessible(true)メソッドを呼び出す必要があります。