Reflect
java反射机制是在运行中,对于任意一个类,都能够知道这个类的多有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性
类
类都有方法,属性,构造器
类的类 Class<T>类lang包
用于操作一个类的属性,方法,构造器
Class<?> clazz=Class.forName("java.lang.String");
根据一个类的全名字符串来获得一个类的类对象
方法的类Method lang包
Method[] methods =clazz.getDeclaredMethods();
获得传递过来的类所有方法
属性的类
Field[]fields =clazz.getDeclaredFields();
获得类所有的属性
构造器的类
Constructor<?>[]cs =clazz.getDeclaredConstructors();
获得类所有的构造器
方法一 Class.forName("类的全路径")定义字符串来获取类
方法二 getClass(); 通过调用该类的对象调用getClass()方法
方法三 Class<?>clazz =Person.class 通过类的名字打点class,如:Person.class;
1:static Class<?> forName(String className) 返回类
2:Field getDeclaredField(String name) 返回一个Field对象
3:Field[] getDeclaredFields() 返回Field对象的一个数组
4:Method getDeclaredMethod(String name,Class<?>...parameterTypes) 返回Method对象,该对象反映此Class对象所表示的类或接口的制定已申明方法
例
Class<?> class1= Class.forName("xxx/xxx/xxx");
Field field =class1.getDeclaredField("name");
System.out.println(field);
// 获取一个属性,
Class1.getDeclaredMethod("getName",parameterTypes)
参数是(String,Class<?>...parameterTypes),其中...表示可变参数,其实就是一个数组
// 获取一个方法
Constructor<?>constructor=class1.getDeclaredConstructor(new Class[]{});
// 获取一个无参构造器
Constructor<?>constructor=class1.getDeclaredConstructor(new Class[]{参数});
// 获取一个有参构造器
浙公网安备 33010602011771号