この記事では、以下のProduct
クラスが持つ、print()
,print2()
,print3()
メソッドにリフレクションを使ってアクセスする方法をまとめています。
Product.java
public class Product {
//引数なし、戻り値なしのメソッド
private void print(){
System.out.println("ハローワールド");
}
//引数あり、戻り値なしのメソッド
private void print2(String str){
System.out.println(str);
}
//引数あり、戻り値ありのメソッド
private String print3(String str){
return str + "です。";
}
}
引数も戻り値もないprint()
を呼び出す方法は以下のとおりです。
ProductTest.java
//インスタンスを取得。
Product obj = new Product();
//メソッドを取得。
Method method = Product.class.getDeclaredMethod("print");
//メソッドにアクセスできるようにする。
method.setAccessible(true);
//メソッド実行
method.invoke(obj);
実行結果
ハローワールド
引数を取るprint2()
を呼び出す方法は以下のとおりです。
ProductTest.java
//インスタンスを取得。
Product obj = new Product();
//メソッドを取得。
Method method = Product.class.getDeclaredMethod("print2", String.class);
//メソッドにアクセスできるようにする。
method.setAccessible(true);
//メソッド実行
method.invoke(obj, "おはよう世界");
実行結果
おはよう世界
引数を取り、戻り値も返すprint3()
を呼び出す方法は以下のとおりです。
ProductTest.java
//インスタンスを取得。
Product obj = new Product();
//メソッドを取得。
Method method = Product.class.getDeclaredMethod("print3", String.class);
//メソッドにアクセスできるようにする。
method.setAccessible(true);
//メソッド実行
String result = (String) method.invoke(obj, "Javaは世界一");
//戻り値の出力。
System.out.println(result);
実行結果
Javaは世界一です。
以上で記事の解説はお終い!
もっとJavaやSpringを勉強したい方にはUdemyがオススメ!同僚に差をつけよう!