この記事では、以下のProductクラスが持つ、fieldVal
フィールドの値をリフレクションを使って設定する方法(書き換える方法)をまとめています。
Product.java
public class Product {
private String fieldStr = "ハローワールド";
private int fieldVal = 100;
private void Twice(){
this.fieldVal = fieldVal * 2;
}
}
ProductTest.java
//インスタンスを取得。
Product obj = new Product();
//フィールドを取得。
Field field = Product.class.getDeclaredField("fieldVal");
//フィールドにアクセスできるようにする。
field.setAccessible(true);
//フィールドの値を出力。
System.out.println("メソッド実行前:" + field.get(obj));
//フィールドの値を書き換える。
field.setInt(obj, 1000);
//メソッドを取得。
Method method = Product.class.getDeclaredMethod("Twice");
//メソッドにアクセスできるようにする。
method.setAccessible(true);
//メソッド実行
method.invoke(obj);
//フィールドの値を出力。
System.out.println("メソッド実行後:" + field.get(obj));
実行結果
メソッド実行前:100
メソッド実行後:2000
以上で記事の解説はお終い!
もっとJavaやSpringを勉強したい方にはUdemyがオススメ!同僚に差をつけよう!