Java反射工具类 主要在设计模式,框架中用到。
JAVA反射机制是在运行状态中, 对于任意一个类, 都能够知道这个类的所有属性和方法; 对于任意一个对象, 都能够调用它的任意一个方法和属性。
从对象出发,通过反射(Class类)可以取得取得类的完整信息(类名 Class类型,所在包、具有的所有方法 Method[]类型、某个方法的完整信息(包括修饰符、返回值类型、异常、参数类型)、所有属性 Field[]、某个属性的完整信息、构造器 Constructors),调用类的属性或方法
自己的总结: 在运行过程中获得类、对象、方法的所有信息。
动态的创建一个类的对象和调用对象的方法:
作用1 : 使用Class进行对象的实例化
如果对象有无参构造方法
Class> cls = Class.forName("com.bank.Person");
Person per = (Person) cls.newInstance(); 感觉也不算足够动态,还是要明确写出Person
简写: Person per = (Person)Class.forName("com.bank.Person").newInstance();
如果对象只有有参构造方法
Class> cls = Class.forName("com.bank.Person");
Constructor>[] con = cls.getConstructors(); //得到全部的构造方法---
根据class对象获取类的方法,getMethod和getMethods。
Person per = (Person)con[0].newInstance("张三",30);
取得字段引用直接获取和设置对象字段,无论访问修饰符是什么。 缺点是反射的效率很低,而且会破坏封装,通过反射可以访问类的私有方法,不安全。
工厂设计中应用反射机制
Class类在一般的基本开发是不不会有任何作用的,完全可以不会,但是,对于一些高端的开发框架 框架的原理:反射+XML+XML解析
Class的三种实例化方法
Class> cls = obj.getClass();
Class> cls = obj.class;
Class> cls = Class.forName("类名"); //开发中主要用这种方法
JDBC 中用到
> 是泛型的用法
如果了解JVM可以结合JVM的相关知识说。
反射就是程序运行期间JVM会对任意一个类洞悉它的属性和方法,对任意一个对象都能够访问它的属性和方法。