1、什么是反射
Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。
2、反射能做什么
我们知道反射机制允许程序在运行时取得任何一个已知名称的class的内部信息,包括包括其modifiers(修饰符),fields(属性),methods(方法)等,并可于运行时改变fields内容或调用methods。那么我们便可以更灵活的编写代码,代码可以在运行时装配,无需在组件之间进行源代码链接,降低代码的耦合度;还有动态代理的实现等等;但是需要注意的是反射使用不当会造成很高的资源消耗!
3、反射的使用
实例化对象,调取实例中的方法。
Class<?> aClass = Class.forName("com.bihe.mySeat.modules.seatmap.model.entity.Floor"); // 实体类
Constructor constructor = aClass.getDeclaredConstructor(String.class); // 有参构造 ,实体类中必须要有构造器,不然会报错
Floor o1 = (Floor) constructor.newInstance("timi");
Constructor constructor1 = aClass.getDeclaredConstructor(); // 无参构造,实体类中必须要有构造器,不然会报错
Floor o = (Floor) constructor1.newInstance();
Method getInfo = aClass.getDeclaredMethod("getInfo"); // 调用方法
getInfo.setAccessible(true);// 禁用安全检查的开关。
Object invoke = getInfo.invoke(o);