Java自定义注解一般使用场景为:自定义注解+拦截器或者AOP,使用自定义注解来自己设计框架,使得代码看起来非常优雅。
//@Target指定注解可以存在的位置
@Target({ElementType.METHOD,ElementType.TYPE})//注解可以出现在方法上,注解还可以出现在多个位置
//@Retention指定注解可以存在的生命周期
@Retention(RetentionPolicy.SOURCE)//注解可以存在源文件中
@interface Test{//定义一个注解 名字叫Test
int age() default 10;//age()是注解中定义的age属性的语法,default为age属性设置了默认值、
String value() default "JACK";
}
@Test("ADD")
class hello{
String name;
@Test(age=100 , value="ADD")//定义了普通的age属性,并赋值
public void add(){
System.out.println(name);
}
}
自定义注解:@interface来标志 注解名
Target:描述了注解修饰的对象范围,取值在java.lang.annotation.ElementType定义,常用的包括:
- METHOD:用于描述方法
- PACKAGE:用于描述包
- PARAMETER:用于描述方法变量
- TYPE:用于描述类、接口或enum类型
Retention: 表示注解保留时间长短。取值在java.lang.annotation.RetentionPolicy中,取值为:
- SOURCE:在源文件中有效,编译过程中会被忽略
- CLASS:随源文件一起编译在class文件中,运行时忽略
- RUNTIME:在运行时有效
网友评论