java的四种元注解@Retention @Target @Document @Inherited

java中元注解有四个: @Retention @Target @Document @Inherited;

@Retention

表示在什么级别保存该注解信息

@Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含,(注解将被编译器丢弃)
@Retention(RetentionPolicy.CLASS) // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,(注解在class文件中可用,但会被VM丢弃 )
@Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到,(VM将在运行期也保留注释)

@Target

注解的作用目标

@Target(ElementType.TYPE) //接口、类、枚举、注解
@Target(ElementType.FIELD) //字段、枚举的常量
@Target(ElementType.METHOD) //方法
@Target(ElementType.PARAMETER) //方法参数
@Target(ElementType.CONSTRUCTOR) //构造函数
@Target(ElementType.LOCAL_VARIABLE)//局部变量
@Target(ElementType.ANNOTATION_TYPE)//注解
@Target(ElementType.PACKAGE) ///包

@Documented 

将此注解包含在 javadoc 中 ,它代表着此注解会被javadoc工具提取成文档。在doc文档中的内容会因为此注解的信息内容不同而不同。相当与@see,@param 等。

@Inherited 

允许子类继承父类中的注解。

示例代码

@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface Person {
    int age() default 20;
    String name() default "simons";
}
 
@Person(age = 25,name = "mike")
public class PersonInfo {
    public void getInfo(){
        //TODO ……
    }
}

参考资料:

https://love1024.blog.csdn.net/article/details/79570578

https://blog.csdn.net/jiuxin_jiuxin/article/details/109849154

https://blog.csdn.net/lkp1603645756/article/details/84072600

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值