Javaのリフレクションメカニズム
効果:
- JAVAリフレクションメカニズムは実行状態にあり、どのクラスでも、このクラスのすべての属性とメソッドを知ることができます。
- 任意のオブジェクトについて、任意のメソッドと属性を呼び出すことができます。
- 動的に情報を取得し、オブジェクトメソッドを動的に呼び出す機能は、Java言語のリフレクションメカニズムと呼ばれます。
具体操作:
例:
package test;
public class Student {
public Student(){
}
public Student(int num,String name){
}
private int num;
public String name;
protected String address;
}
リフレクションを使用してクラスを取得します。
-
クラスのオブジェクトを取得するには、object.getclass();を使用します。
Student st=new Student(); st.getclass();
-
クラスname.class;
Student.class;
-
Class.forName( "パッケージ名、クラス名");
Class.forName("test、Student");
リフレクションを使用して、クラスのコンストラクター、属性、およびメソッドを取得します。
- クラスのコンストラクターを取得する
//测试类中的代码
Class c=Student.class;
//getConstructors只能获得公共构造器//getDeclaredConstructors获得所有构造器
//constructor是获取构造器时所用
Constructor[] cs= c.getConstructors;
for (Constructor constructor : cs) {
Student st=(Student)constructor.newInstance();
System.out.println(st);
}
-
クラスの属性を取得する
public class Test{ public static void main(String[] args) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { //获得反射,获取属性的关键代码 Class c=Student.class; Field[] fs= c.getDeclaredFields(); for (Field field : fs) { System.out.println(field); } //输出的结果为 /* private int com.qm.test.Student.num * public java.lang.String com.qm.test.Student.name * protected java.lang.String com.qm.test.Student.address */ } }
-
クラスのメソッドを取得する
public class Test{ public static void main(String[] args) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { //获取方法的关键代码 Class c=Student.class; Method[] ms=c.getMethods(); for (Method method : ms) { System.out.println(method); } //此段代码将会输出Student类中继承了Object类的一些方法 } }
*免責事項:このブログ投稿は学習ノートです。新人チュートリアルおよびその他のネットワークリソースを参照してください。違反やエラーがある場合は、プライベートメッセージでお知らせください。*