Java基本注解

基本注解

5个基本注解:

  1. @Override:用来指定方法覆载的,它可以强制一个子类必须覆盖父类的方法。(只能修饰方法,不能修饰其它元素)
  2. @Deprecated:用于表示某个程序元素已过时,当其它程序使用已过时的类,方法时,编译器将会给出警告。
  3. @Suppress Warnings:指示被该Annotation修饰的程序元素(以及该程序元素中的所有子元素)取消指定的编译器警告。
  4. @Safe Varargs(Java7新增):它是Java7专门为抑制“堆污染”警告提供的。
  5. @FunctionalInterface(Java8新增):用来指定某个接口必须是函数式接口。

元Annotation

使用@Retention

@Retention只能用于修饰Annotation定义,用于指定被修饰的Annotation可以保留多长时间,@Retention包含一个RetentionPolicy类型的value成员变量。

value的成员变量:

RetentionPolicy.CLASS:编译器把Annotation记录在class文件中。当运行java程序是,JVM不可获取Annotation信息。这是默认值。

RetentionPolicy.RUNTIME:编译器把Annotation记录在class文件中。当运行java程序是,JVM也可获取Annotation信息,程序可以通过反射获取该Anntation信息。

RetentionPolicy.SOURCE:Annotation只保留在源代码中,编译器直接丢弃这种Annotation。

使用@Target

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

value的成员变量:

ElementType.ANNOTATION_TYPE:指定该策略的Annotation只能修饰Annotation。

ElementType.CONSTRUCTOR:指定该策略的Annotation只能修饰构造器。

ElementType.FIELD:指定该策略的Annotation只能修饰成员变量。

ElementType.LOCAL_VARIABLE:指定该策略的Annotation只能修饰局部变量。

ElementType.METHOD:指定该策略的Annotation只能修饰方法定义。

ElementType.PACKAGE:指定该策略的Annotation只能修饰包定义。

ElementType.PARAMETER:指定该策略的Annotation可以修饰参数。

ElementType.TYPE:指定该策略的Annotation可以修饰类、接口或枚举定义。

使用@Documented

@Documented用于指定被该元Annotation修饰的Annotation类将被javadoc工具提取成文档,如果定义Annotation类时使用了@Documented修饰,则所有使用该Annotation修饰的程序员元素的API文档中将会包含该Annotation说明。

使用@Inherited

@Inherited元Annotation指定被它修饰的Annotation将具有继承性——如果某个类使用了@xxx注解(定义该Annotation时使用了@Inherited修饰)修饰,则其子类将自动被@xxx修饰。

自定义Annotation

定义新的Annotation类型使用@interface关键字定义一个新的Annotation类型与定义一个接口非常像,如下可定义一个简单的Annotation类型。

public @interface Test{

}

Annotation还可以带成员变量,Annotation的成员变量在Annotation定义中以无形参的方法来声明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值