【java】 リフレクションの使い方
公開日:
:
最終更新日:2014/01/30
java
instanceメンバ
・メソッド
import java.lang.reflect.Field; import java.lang.reflect.Method; MyObject obj = new MyObject(); Method method; //instanceメソッド引数なし method = objgetClass().getDeclaredMethod("methodName", new Class[]{}); method.setAccessible(true); method.invoke(obj); //instanceメソッド引数あり method = MyClass.class.getDeclaredMethod("methodName", new Class[]{ int.class, byte[].class, Object.class }); method.setAccessible(true); method.invoke(obj, new Object[]{ 1, new byte[]{} new Object() });
・変数
MyObject obj = new MyObject(); Field field; field = obj.getClass().getField("fieldName"); field.set(obj, new Integer(1)); int n = (Integer) field.get(obj);
staticメンバ
・変数
Field field; field = MyObject.class.getField("fieldName"); field.set(null, new Integer(1)); int n = (Integer) field.get(null);
・メソッド
import java.lang.reflect.Field; import java.lang.reflect.Method; Method method; //staticメソッド引数なし method = MyClass.class.getDeclaredMethod("methodName", new Class[]{}); method.setAccessible(true); method.invoke(null); //staticメソッド引数あり method = MyClass.class.getDeclaredMethod("methodName", new Class[]{ int.class, byte[].class, Object.class }); method.setAccessible(true); method.invoke(null, new Object[]{ 1, new byte[]{} new Object() });
関連記事
-
-
【java】正規表現
基本的な使い方 //●コンストラクタ String regExp = "[^0
-
-
【java】可変長引数 String… args
javaのメソッドで引数の型の後ろにドット「.」を3つ続けて書くと可変長引数になります。 これ
-
-
【java】HashMapの全てのキーと値を取得する
HashMap<String,String> hm = new HashMap<
-
-
【java】Calendar : 日付や時間を扱う
Locale locale = Locale.getDefault(); Calendar c
-
-
【java】【objective-c】Java vs Objective-C 言語比較
Java人間がObjective-Cを勉強するにあたって一番苦労するのは文法に関するネーミングの違い