注解和反射机制是SPRING框架的底层,注解的基本用法如下。
package com.company;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@MyAnnotation("111") // 该注解不能使用在CLASS,会标红
public class test01 {
@MyAnnotation("我的注解") // 因为其他几个有默认值,所以仅需要入参value=
public void test(){
}
}
// 自定义一个注解 MyAnnotation
@Target({ElementType.METHOD,ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation{
// value() 非方法,而是注解的参数定义
// 只有一个 value() 参数时,注解时可省参数名
String value();
int age() default 0; // 可设默认值,未设置则使用注解时必填
int id() default -1;
}
- 定义在注解上的注解为元注解,如下4个
- @Target:定义注解适应范围,如仅对方法(METHOD)生效,则只能注解在方法上。主要有:TYPE-类/接口等、FIELD-字段、METHOD-方法。
- @Retention:定义注解生效级别。source<class<runtime,分别对应 源码级别 类级别 运行时级别。一般自定义的都是运行时生效。
- @information:定义在注解上,则该注解会被包含在javadoc中。
- @Inherited:定义子类是否可继承父类注解。