一:定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
二:分类: 1)按照运行机制分为:源码注解,编译时注解,运行时注解 2)按照来源分为:JDK注解,第三方注解,自定义注解 3)元注解:注释的注释 三:具体注释 1.JDK注解 1)@Override表示当前的方法覆盖父类的方法 2)@DePRecated表示方法已经过时,方法上有横线,使用时会有警告
3)@SuppressWarning表示关闭一些警告信息
2.自定义注解
补充: (1)成员类型是受限的,合法的类型包括原始类型以及String、Class、Annotation、Enumeration (2)如果注解只有一个成员,并且把成员取名为value(),则在使用时可以忽略成员名和赋值号“=” (3)注解类可以没有成员,没有成员的注解称为标识注解 (4)作用域参数: ElemenetType.CONSTRUCTOR(构造方法声明) ElemenetType.FIELD(字段生声明) ElemenetType.LOCAL_VARIABLE(局部变量声明) ElemenetType.METHOD (方法声明) ElemenetType.PACKAGE (包声明) ElemenetType.PARAMETER (参数声明) ElemenetType.TYPE(类,接口声明) (5)生命周期参数: RetentionPolicy.SOURCE(只在源码显示,编译时会丢失) RetentionPolicy.CLASS(编译时会记录到class中,运行时忽略) RetentionPolicy.RUNTIME( 运行时存在) 3.使用注解的语法 @<注解名>(成员名=成员值,。。。) 4 .解析注释
public class ParseAnn { public static void main(String[] args) { try { //1使用类加载器加载类 Class child = Class.forName("com.ann.test.Child"); //2找到类上面的注解 boolean isExist = child.isAnnotationPresent(Description.class); if(isExist){ //3拿到注解实例 Description d = (Description)child.getAnnotation(Description.class); System.out.println(d.value()); } //4找到方法上的注解 Method[] ms = child.getMethods(); for (Method method : ms) { boolean isMExist = method.isAnnotationPresent(Description.class); if(isMExist){ Description d = (Description)method.getAnnotation(Description.class); System.out.println(d.value()); } } } catch (ClassNotFoundException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } }}要解析的类和运行结果:
新闻热点
疑难解答