首页 > 代码库 > Java注解
Java注解
一、注解的分类:
1、按照运行机制分:
1)、源码注解:只在源码中存在,.java文件中
2)、编译时注解:在源码和.class文件中都存在 如:@Override @Deprecated @Suppvisewarnings
3)、运行时注解:在运行阶段起作用,会影响运行逻辑的注解 如:@Autowired
2、按照来源分:
1)、来自JDK的注解
2)、来自第三方的注解
3)、我们自己定义的注解
3、元注解:
注解的注解
二、自定义注解
1、使用@interface关键字定义注解
2、成员以无参数无异常方式声明
3、可以用default为成员指定一个默认值
4、成员的类型只能是基本类型、String、Class、Annotation、Enumeration
5、如果注解只有一个成员,则成员名必须取名为value(),在使用时可以忽略成员名和赋值号(=)
6、注解类可以没有成员,没有成员的注解成为标示注解
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Description{
String desc();
String author();
int age() default 18;
}
三、元注解
1)、@Target: 注解的作用域
构造方法声明 CONSTRUCTOR、
字段声明FIELD、
局部变量声明LOCAL_VARIABLE、
方法声明METHOD、
包声明PACKAGE、
注解类型声明ANNOTATION_TYPE、
参数声明PARAMETER、
类接口声明TYPE
2)、@Retention:生命周期
SOURCE只在源码显示,编译时会丢弃
CLASS编译时会记录到class中,运行时忽略
RUNTIME运行时存在,可以通过反射读取
3)、@Inherited:允许子类继承
4)、@Documented:生成javadoc时会包含注解信息
四、使用自定义注解
1、使用注解的语法:
@<注解名>(<成员名1>=<成员名值1>,<成员名2>=<成员名值2>,...)
@Description(desc="i am eyeColor", author="Mooc Boy", age=19)
public String eyeColor(){
return "red";
}
五、解析注解
概念:通过反射获取类、函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑
Java注解