反射机制是 Java 的动态性之一
动态语言:在程序运行时,可以改变程序的结构或变量的类型
Java的动态性让编程变得更加的灵活,功能就更加的强大
反射机制的常见作用
1) 动态的加载类、动态的获取类的信息(属性,方法,构造器)
2) 动态构造对象
3) 动态调用类和对象的任意方法、构造器
4) 动态调用和处理属性
5) 获取泛型信息
6) 处理注解
获取 Class 对象的方式
1) 通过字节码文件
2) 对象的 getClass()方法
3) Class 类的静态方法 forName(….)
例:获取类名所调用的方法
String getName() 获得包名+类名
String getSimpleName() 获得类的名字
例:获得类的属性所调用的方法
Field getField(String fieldName) 得到公共的属性对象
Field []c.getDeclaredFields() 得到所有的属性对象
反射机制对程序的运行在性能上有一定的影响,速度慢
可以通过 setAccessible 来提高反射性能
java中新增的其中一种泛型
ParameterizedType: 表 示 一 种 参 数 化 的 类 型 ,比 如Collection<String>,可以获取 String 信息
注解
其作用1) 不是程序本身,可以对程序作出解释。(这一点跟注释没什么区别)
2) 可以被其他程序(比如:编译器等)读取。(注解信息处理流程,是注解和注释的重大区别,如果没有注解信息处理流程,则注解毫无意义)
注解是以”@注释名”在代码中存在,还可以添加一些参数值
内置的注解
1) @Override :标识方法是重写的方法
2) @Deprecated :标识的方法不建议使用
3) @SuppressWarnings:用来抑制编译时的警告信息
4)@SuppressWarinings 需要提供参数才能正常使用
使 用 @interface 定 义 自 定 义 注 解 时 , 自 动 继 承 了java.lang.annotation.Annotation 接口
@interface 用来声明一个注解
注意事项:注解元素必须要有值
元注解的作用就是负责注解其他注解
1) @Target 作用:用于描述注解的使用范围
2) @Retention 作用:表示需要在什么级别保存该注解信息,用于描述注解的生命周期
3) @Document
4) @Inherited
ORM:对象关系映射