注解概述
注解其实就是对程序的标注和解释,注解可以看作是一种特殊的标记,可以用在方法、类、参数和包上,程序在编译或者运行时检测到这些标记而进行一些解释处理(解释器就是通过反射)。
元注解
描述注解的注解称为元注解。Java5定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明
- @Target
- @Retention
- @Documented
- @Inherited
@Target
指定注解使用的位置
可选类型 | 描述 |
ElementType.TYPE | 应用于类、接口、枚举 |
ElementType.FIELD | 应用于属性 |
ElementType.METHOD | 应用于方法 |
ElementType.PARAMETER | 应用于方法的形参 |
ElementType.CONSTRUCTOR | 应用于构造函数 |
ElementType.LOCAL_VARIABLE | 应用于局部变量 |
ElementType.ANNOTATION_TYPE | 应用于注解类型 |
ElementType.PACKAGE | 应用于包 |
ElementType.TYPE_PARAMETER | 应用于类型变量 |
ElementType.TYPE_USE | 应用于任何使用类型的语句中(例如声明语句、泛型和强制转换语句中的类型) |
@Retention
指定注解声明周期
可选类型 | 描述 |
RetentionPolicy.SOURCE | 编译时被丢弃,不包含在类文件中 |
RetentionPolicy.CLASS | JVM加载时被丢弃,包含在类文件中,默认值 |
RetentionPolicy.RUNTIME | 由JVM 加载,包含在类文件中,在运行时可以被获取到 |
@Documented
被记录到javadoc文档化
@Inherited
表示该注解向下继承
自定义注解
访问修饰符必须为public,不写默认为pubic,关键字为@interface
public @interface 注解名称{
public 属性类型 属性名() default 默认值
public String name(); // 不给默认值 ,使用注解时传进来@注解名称(name="123")
//定义一个Class 类型属性
public Class calss () default Ano.class;
}
本文含有隐藏内容,请 开通VIP 后查看