注解可以分为2类:
1.元注解(Meta):系统预定义的.
用来注释注解的注解(元注解本身就是注解.用来修饰别的注解)
所以元注解时写在注解类上的
在JDK1.5时内置了4个元注解:
@Target:表示该注解用在什么地方.使用ElementType来解释.
Constructor 构造方法
Method 普通方法
Field 成员变量
Type 类
ElementType.LOCAL_VARIABLE 局部变量
PACKAGE 包
@Retention:表示需要在什么级别保存注解的信息.使用RetentionPolicy来解释
RUNTIME 在JVM运行期间会保留下来的注解.我们可以通过反射来读取注解里面的内容.
CLASS 将会在class文件中,但是会被JVM抛弃.
SOURCE 将会被编译器抛弃.
@Documented
该注解包含在JavaDoc文档中
@Inherited
允许子类继承父类的注解.
2.标记注解(Marker):指注解中没有任何元素
注解用途:
1.switch
2.常量(1年中的12个月.1个星期的7天)
总结:
针对方法上的注解
1.定义一个注解解释器方法(集合list,方法所在的实体类Class<Test> c)
2.通过反射,获取该实体类的所有方法,同时遍历
for(Method m: c.getDeclaredMethods())
3.在foreach内部,针对每个方法进行操作
for(Method m: c.getDeclaredMethods()){
4.从方法上获取所有的指定类型的注解
MyAnnotation ma=m.getAnnotation(MyAnnotation.class)
5.判断ma是否为null,如果不为null,则获取id,和description
if(ma!=null){
System.out.println("发现注解元素:"+ma.id())
System.out.println("发现注解元素:"+ma.description())
list.remove(new Integer(ma.id()));//移除已经存在的注解id,list中剩下的就是没有发现的注解元素
}
}
浙公网安备 33010602011771号