注解基础知识
一、注解简介
1.注解,或者叫注释,英文单词是:Annotation
2.注解是一种引用数据类型。编译之后也是生成
xxx.class文件
3.自定义注解:语法格式
[修饰符列表] @interface 注解类型名{
}
注:注解和注释的区别
注解:是给编译器看的,如果不合法,编译器会报错
注释:是给程序员看的,提高程序的可读性
4.默认情况下,注解可以出现在任何位置。
二、元注解
1.什么是元注解?
用来标注 注解类型 的注解。
2.常见的元注解
@Target
用法:@Target(ElementType.METHOD)
作用:表示“被标注的注解只能出现在方法上”
取值ElementType有
TYPE—>用于描述类、接口、enum声明等
FIELD—>用于描述域
METHOD—>用于描述方法
CONSTRUCTOR—>用于描述方法
PARAMETER—>用于描述参数
LOCAL_VARIABLE—>用于描述局部变量
PACKAGE—>用于描述包
@Retention
用法:@Retention(RetentionPolicy.SOURCE)
作用:表示被标注的注解只被保留在java源文件中
取值RetentionPolicy有
SOURCE—>表示被标注的注解只被保留在java源文件中
CLASS—>表示该注解被保存在class文件中
RUNTIME—>表示该注解被保存在class文件中,并且可以被反射机制所读取
注意:若一次性需要多个属性,需用{}括起来
// 示例
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})
三、关于注解的使用
如果一个注解当中有属性,那么必须给这个属性赋值(除非该属性使用***default***指定了默认值)
public @interface MyAnnotation {
/**
* 我们通常在注解中可以定义属性,以下这个是MyAnnotation的name属性
* 看着像一个方法,但实际上我们称之为属性name
*/
String name();
String color();
int age() default 25;// 属性指定默认值
}
注解当中的属性可以是哪种类型呢?
byte short int long double boolean char String Class 枚举类型
以及以上所有的数组形式