一.反射是什么
1.JAVA机制反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法 并调用所有属性和方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
二.反射的作用
1.反射是java语言的一种机制,利用反射机制动态的实例化对象(构造函数)。读写属性 性、调用方法。
①.在运行时判断任意一个对象所属的类
②.在运行时构造任意一个类的对象
③.在运行时判断任意一个类所具有的成员变量和方法
④.在运行时调用任意一个对象的方法
三.反射的应用(一切反射相关的代码都从获得类对象开始)
1.获取类对象的方式
①.类名.class
Class clazz = Student.class;
System.out.println(clazz);
②.对象名getClass( )
Student stu = new Student();
Class clazz1 = stu.getClass();
System.out.println(clazz1);
③.Class.forName(类的全限定名)
Class class2 = Class.forName("com.zking.reflection.Student");
System.out.println(class2);
2.根据类得到类名
①.获取全限定名类名getName0
②.获取类名类名getSimpleName0
③.获取包名类名getPackage0
System.out.println(clazz.getSimpleName());
System.out.println(clazz.getName());
System.out.println(clazz.getPackage());
效果:
3.根据类得到类的属性
①.获取属性名 属性名.getName()
②.获取属性类型 属性名.getType0
③.获取属性访问修饰符 属性名.getModifiers0
④.设置属性值,参数1:要设置属性所在对象;参数2:要设置的值属性名.set(Object,Object)
获取属性值,参数:要获取属性值的对象属性名.get(Object)
⑤.获取单个属性(私有、公有、受保护、默认、静态)类对象getDeclaredField(“属性名”)
⑥.获取所有属性(私有、公有、受保护、默认、静态)类对象.getDeclaredFields(私有属性访问需要先打开访问限制 属性名.setAccessible(true)
4.根据类得到类的方法
①.获取单个公有方法 类对象.getMethod0
②.获取当个方法(包括私有、受保护、默认、公有)类对象.getDeclaredMethod(
根据类得到类的方法
③.获取所有公有方法 类对象.getMethods0
④.获取所有的方法(包括私有、受保护、默认、公有) 类对象.getDeclaredMethod0
5.根据类得到类的构造方法
①.获取单个公有构造方法 类对象.getConstrutor0
②..获取单个构造方法(包括私有、受保护、默认、公有)类对象.getDeclaredConstrutor0
根据类得到类的构造方法
③.获取所有的公有构造方法类对象getConstrutors0
④.获取所有的构造方法(包括私有、受保护、默认、公有)类对象getDeclaredConstrutors0
6.根据类得到类的实现接口列表
①.类对象getinterfaces0