Java注解

注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,注解的语言比较简单,除了@符号的使用之外,它基本与Java固有的语法一致。java内置了三种注解,定义在java.lang中:

  • @Override:表示当前的方法定义将覆盖超类中的方法。
  • @Deprecated:如果程序员使用了注解为它的元素,那么编译器会发出警告信息。
  • @SuppressWarnings:关闭不当的编译器警告信息。


  • 定义注解

注解的定义和接口的定义很像,事实上,与其他任何Java接口一样,注解也将会编译成class文件。

@Documented
@Inherited
@Retention( RetentionPolicy.RUNTIME )
@Target( ElementType.METHOD )
public @interface Permission{
 
    boolean validate() default true;
 
    String permissionKey();

}

从以上代码可以看出,除了@符号之外,@Permission的定义很像一个空的接口。定义注解时,会需要一些元注解,如@Target和Retention。

  • 元注解

java不仅提供了三种标准注解(上文所见),还提供了四种元注解。元注解专职负责注解其他的注解:

@Target:表示该注解可以用于什么地方,其中的ElementType参数包括:

    • CONSTRUCTOR:构造器的声明

    • FIELD:域声明(包括enum实例)

    • LOCAL_VARIABLE:局部变量声明

    • METHOD:方法声明

    • PACKAGE:包声明

    • PARAMETER:参数声明

    • TYPE:类、接口(包括注解类型)或enum声明

    • ANNOTATION_TYPE:注解类型声明

    • TYPE_PARAMETER:键入参数声明

    • TYPE_USE:使用类型

@Retention:表示需要在什么级别保存该注解信息,其中RetentionPolicy参数包括:

  • SOURCE:注解将被编译器丢弃
  • CLASS:注解在class文件中可用,但会被JVM丢弃
  • RUNTIME:JVM在运行时期也保留注解。

@Documented:将此注解包含在Javadoc中。

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

大多数时候,都是自己定义自己所需要的注解,并编写自己的处理器来处理注解。

  • 注解元素

注解元素可用的类型如下所示:

  • 所有基本类型(int,float,boolean等)

  • String

  • Class

  • enum

  • Annotation

  • 数组

注:不允许使用任何包装类型。


其实注解定义很简单,关键在于要使用注解做什么,以及处理注解的处理器。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐只乐之

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值