java中的反射机制

一、反射

a)         指的是可以用于运行时加载、探知、使用编译期间完全未知类

二、反射的特点

a)         程序运行状态中,可以动态加载只有一个名称的类,对于以任意一个已加载的类,都能够知道这个类的所有方法和属性,对任意一个类的对象,都能调用该对象的所有属性和方法

三、反射得写法(通过反射获取一个该类的对象)

a)         Person person=(Person)Class.forName(“com.example.Person”);

四、针对任何您想动态加载的类、运行的类,都必须先获取相应的Class

五、获取Class的方法

a)         getClass();

b)         Class.forName();(最常用)

c)         .class

六、反射机制的作用:

a)         动态加载类、动态获取类的信息(属性、方法、构造器);

b)         动态构造对象

c)         动态调用类和对象的任意方法、构造器

d)         动态调用和处理属性

e)         获取泛型信息

f)          处理注解

七、反射机制怎样引入泛型

a)         Java采用泛型擦除的机制来引入泛型java泛型仅仅是给编译器javac来使用的

                         i.              确保数据的安全性免除强制类转换的麻烦。

b)         一旦编译完成,所有和泛型有关的类型全部擦出

八、反射机制的性能问题

a)         SetAccessible安全检查的开关

 

                         i.              值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查

                       ii.              值为 false 则指示反射的对象应该实施 Java 语言访问检查。并不是为true

就能访问为false就不能访问。

b)         如果禁用安全检查,可以提高反射效率

九、为了通过反射来迎合实际开发,java新增了

a)         ParameterizedType:表示一种参数化的类型(例如Collecion<String>

b)         GenericArrayType:表示一种元素类型是参数化类型或者类型变量的数组类型

c)         TypeVariable:各种类型变量的公共父接口

d)         WildcardType:代表i一种通配符类型表达式