Java反射机制
什么是反射
反射就是我们在设计程序的时候,难以保证一些类已经设计好了,但是我们不得不使用这些类。为了保证设计能够继续进行,我们不得不使用反射技术。使的编译能够通过,提高编程的效率,这样的我们就能在规定的时间内完成任务。在运行时期,动态地去获取类中的信息(类的信息,普通方法信息,构造器信息,字段、包、访问修饰符等信息);简单的理解,通过一个全限定类名,获取字节码文件,以及通过该字节码文件获取字段、构造方法、普通方法等信息
作用
- 提高开发灵活度,提高程序的扩展性
- 框架(提高开发效率的别人封装好的代码)底层都是使用反射技术。例如:Tomcat、Spring…
- 缺点:破坏封装性,性能低下(以后,能不用反射技术就不用)
语法使用
1、获取字节码文件: 获取字节码文件的目的就是为了获取字节码中的字段、构造方法、普通方法等(这里使用的是Person类)
法一:通过类直接调class
Class cla1 = Person.class;
法二:通过类对象来获取class的
Class cla2 = new Person().getClass();
法三:通过Class.forName();
Class cla3 = Class.forName(“路径”);
2.根据字节码文件获取构造方法、普通方法、字段等
-
获得所有成员变量
Field[] fields = c.getFields();//不包括私有的
Field[] fields = c.getDeclaredFields();//包括私有的 -
为成员变量赋值
第一个参数表示当前对象,第二个表示要附的值
public void set(Object obj,Object value) 为成员变量赋值: