一、反射的概述
反射机制允许java程序加载一个运行时才得知其名称的类,获悉其完整API信息,包括其修饰符、超类、实现的接口,也包括属性和方法的所有信息;
二、反射的作用
能够分析类能力的程序成为反射(reflective)。反射的功能极其强大,可以用来:
a、在运行时分析类的能力
b、在运行时检查对象,例如,编写一个适用于所有类的toString方法。
c、实现泛型数组操作代码
注:如果只对编写应用程序感兴趣,而不是要为其他java程序员构建工具,可以只做了解
实现Java反射机制的类:
a、java.lang.Class
b、java.lang.reflect.Constructor
c、java.lang.reflect.Field
d、java.reflect.Method
三、Class类
每个类都有与之对应的一个Class类对象,哪怕它是基础数据类型,例如int,enum,或者注解,Class类对象是反射的入口
获取Class对象的三种方式
a.Class.forName("")(双引号里面是类的全类名)
b.对象名.getClass()
c.类名.Class
四、在什么地方用到了反射?
new了一个person对象,当点的时候就是通过person对象得到它所对应的Class对象得到Person类的信息。
五、方法
a、Class
b、Field
c、Method
d、constructor
六、反射的优缺点:
反射机制使人们可以在运行时查看字段和方法,从而能编写更具有通用性的程序。这种功能对于编写系统程序极其有用,但通常不适于编写应用程序。反射是很脆弱的,如果使用反射,编译器将无法查找编程错误,只有在运行时才会发现错误并导致异常,影响性能。