(25)Jdk中的常用注解————概念及应用

JDK内置的三个基本注解

1, @Override:限定重写父类方法,该注解只能用于方法

2, @Deprecated:用于表示所修饰的元素(类,方法等)已过时。通常是因为所修饰的结构危险

3, @SuppressWarnings:抑制编译器警告

jdk提供的4种元注解

元注解:对现有的注解进行解释说明的注解

1,Retention(常用)
@Retention:只能用于修饰一个Annotation定义,用于指定该Annotation的生命周期,@Rentention包含一个RetentionPolicy类型的成员变量,使用@Rentention时,必须为该value成员变量指定值:

RetentionPolicy.SOURCE:在源文件中有效(即源文件保留),编译器直接丢弃这种政策的注解

RetentionPolicy.CLASS:在class文件中有效(即class保留),当运行Java程序时,JVM不会保留注解,这是默认值

RententionPolicy.RUNTIME:在运行时有效(即运行时保留),当运行Java程序时,JVM会保留注释。程序可以通过反射获取该注释。

在这里插入图片描述

2,Target(常用)

@Target:用于修饰Annotation定义,用于指定被修饰的Annotation能用于修饰哪些程序元素。@Target也包含一个名为value的成员变量。

成员变量描述
CONSTRUCTOR用于描述构造器
FIELD用于描述域(属性)
LOCAL_VARIABLE用于描述局部变量
METHOD用于描述方法
PACKAGE用于描述包
PARAMETER用于描述参数
TYPE用于描述类,接口(包括注解类型)或enum声明

3,Documented

@Documented:用于指定被该元Annotation修饰的Annotation类将被javadoc工具提取成文档。默认情况下,javadoc是不包括注解的。

注意: 定义为Documented的注解必须设置Retention值为RUNTIME。

4,Inherited

@Inherited:被它修饰的Annotation将具有继承性。如果某个类使用了被@Inherited修饰的Annotation,则其子类将自动具有该注解。

比如:如果把标有@Inherited注解的自定义的注解的自定义

  • 可重复注解:@Repeatable

@Repeatable :jdk8中可重复注解,类型注解。使用注意:注解中的Target和Retention等要保持一致

  • 类型注解

ElementType.TYPE_PARAMETER 表示该注解能写在类型变量的声明语句中(如:泛型声明)

ElementType.TYPE_USE 表示该注解能写在使用类型的任何语句中

注解的应用如下
@Target({TYPE, METHOD, FIELD,PARAMETER,TYPE_PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface Statuss {

    Status[] value();
}
@Repeatable(Statuss.class)
@Target({TYPE, METHOD, FIELD,PARAMETER,TYPE_PARAMETER,TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Status {

    String value() default "未付款";
}

注解的测试与校验

@Status(value = "付款")
@Status(value = "已付款")
class Person<@Status T>{

    public static void main(String[] args) {
        Class<@Status Person> personClass = Person.class;
        Annotation[] annotations = personClass.getAnnotations();
        for (Annotation annotation :annotations) {
            System.out.println(annotation);
        }
    }
}

下一章,(26)Java中程序,线程,进程的理解

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值