JAVA反射机制和Class类的应用
程序员文章站
2022-07-12 12:36:25
...
反射是对象---->类 在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息。
Class类对象;JAVA中万事万物都是对象,任何创建的类都是Class类的对象,反射其实就是对Class类的API的应用
获取Class类对象的方法:
1.对象.getClass(); Class c1 = ch.getClass(); System.out.println("+++"+c1); 2.类名.class Class c2 = Teacher.class; System.out.println("c2"+c2); 3,Class.forName(类的全名); Class c3 = Class.forName("反射.Teacher");
API常见的用法
返回类的注释 c3.getAnnotations(); //获得Class类对象的名字 c3.getName(); 获取该类的包名 c3.getPackage(); 根据类创建对象 c3.newInstance();
通过获取的类对象得到该类的构造方法;
// 根据反射获取类可见的构造方法,私有的将不可见 Constructor[] con1 = c3.getConstructors(); ///根据反射获取全部的构造方法,私有的也可见 Constructor[] con2 = c3.getDeclaredConstructors(); // 通过指定的参数获取全部的构造方法 Constructor c = c3.getDeclaredConstructor(String.class, int.class); //如果需要操作的构造方法为私有的,设置其为可造作的 c.setAccessible(true); // 根据得到的构造方法创建对象 Object ob = c.newInstance("wang", 23);
2,通过获得的类对象获得该类的属性; //获得所有的可见的属性 Field[] f1 = c3.getFields(); //获取全部的属性 Field[] f2 = c3.getDeclaredFields(); //根据指定名称的可见属性获取 Field f3 = c3.getField("name"); //设置属性可见 f3.setAccessible(true); //根据指定名称的全部属性获取
获取类对象的方法,创建动态数组.......