Java的注解(Annotation)是Java5以后引入的,又叫元数据,也有人翻译成注释,用作给代码元素做标记,可以携带一些说明或配置信息,但是注解本身并不参与代码的运行,需要时必须对编写代码提取注解信息。注解可以修饰的一个类里面的各个组成元素,比如可以修饰类和接口的声明、构造方法、字段、方法还有方法参数等等,具体可以修饰什么元素得看该注解的声明。
注解主要有三个知识点:
一. Java提供的注解
二. 利用元注解自定义注解
三. 提取注解信息
我们知道,一个Java的类主要包括两个元素,即是成员变量和成员方法。成员变量包括实例成员变量和静态成员变量,而成员方法也有实例成员方法和静态成员方法,构造方法则是特殊的成员方法。
而反射的主要作用是能够在运行时获取一个Class的各个元素的结构,但无法更改这些元素的结构。
这些元素就是前面说的成员变量和成员方法,并且对于成员变量,反射可以对其进行设值和取值,对于成员方法,反射可以直接对其进行方法调用,而对于特殊的成员方法构造方法而言,反射可以调用构造方法元素的newInstance()方法直接实例化一个该类的对象,而不需要使用new的方式。
那么现在问题来了,在使用反射获取一个Class的各个元素的结构时,哪些地方可以直接获取得到泛型类型参数,并且能够将该泛型类型参数直接实例化成一个对象呢?