随便聊一聊java的注解
目录
java注解
Annotation
1、编译器注解
不会被编译到.class文件,在编译之后就被编译器扔掉了
@Override:让编译器检查该方法是否正确的实现了覆写
@SuppressWarnings:告诉编译器忽略此处代码产生的警告
2、处理.class文件使用的注解
会被编译进入到.class文件,但是加载结束之后并不会存在于内存中,这些注解只被一些底层库使用,一般不需要开发者来处理
3、程序运行期间可以读取的注解
加载后一直存在于JVM中。
定义一个注解的时候,一般包含一下参数
-
所有基本类型
-
String
-
枚举类型
-
基本类型、String、class以及枚举的数组
二、定义注解
java使用@interface语法来定义注解Annotation
public @interface Report{
int type() default 0;
String level() default "info";
String value() default "";
}
default就是设定默认值的作用
元注解
用A注解来修饰B注解,A就是元注解,java中定义毫克一些元注解,我们直接用就行了
例如:
@Target可以定义其他的注解可以被应用于源码的那些位置
- 类或接口:
ElementType.TYPE
; - 字段:
ElementType.FIELD
; - 方法:
ElementType.METHOD
; - 构造方法:
ElementType.CONSTRUCTOR
; - 方法参数:
ElementType.PARAMETER
。
@Retention定义生命周期
- 仅编译期:
RetentionPolicy.SOURCE
;在编译之后被丢掉 - 仅class文件:
RetentionPolicy.CLASS
;只保存到class文件中。并不会被加载进JVM - 运行期:
RetentionPolicy.RUNTIME
。