注解介绍以及定义 Annotation

注解介绍以及定义 Annotation

元注解:

元注解的作用就是用来描述其他注解的。Java5.0定义了4个标准的元数据类型,它们用来对提供注解类型做说明。

(1)@Target

(2)@Retetion

(3)@Documented

(4)@Inherited

@Target
  • 作用:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)

@Target说明了注解所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使用了target可更加明晰其修饰的目标。

  • 取值(ElementType的取值)可多个
举例描述
@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)
@Target(ElementType.TYPE)
public @interface Annotation {

    String value() default "test";
}
@Retention
  • 作用:表示需要在什么级别保存该注释信息,用于描述注解的生命周期(即:被描述的注解在什么范围内有效)

@Retention定义了该Annotation被保留的时间长短:某些Annotation仅出现在源代码中,而被编译器丢弃;而另一些却被编译在class文件中;编译在class文件中的Annotation可能会被虚拟机忽略,而另一些在class被装载时将被读取(请注意并不影响class的执行,因为Annotation与class在使用上是被分离的)。使用这个meta-Annotation可以对 Annotation的“生命周期”限制。

  • 取值 生命周期周期长度 SOURCE < CLASS < RUNTIME,即前者能作用的地方后者一定也能作用
举例描述
@Retention(RetentionPolicy.SOURCE)注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃
@Retention(RetentionPolicy.CLASS)注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期
@Retention(RetentionPolicy.RUNTIME)注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在

例如: @Override只是做一些检查性的操作 它的类型就是CLASS

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Annotation {

    String value() default "test";
}
@Documented
  • 作用:这个注解只是用来标注生成javadoc的时候是否会被记录

在自定义注解的时候可以使用@Documented来进行标注,如果使用@Documented标注了,在生成javadoc的时候就会把@Documented注解给显示出来。

@Inherited
  • 作用:在注解上使用@Inherited 表示该注解会被子类继承,注意,仅针对类,成员属性、方法并不受此注释的影响

对于类来说,子类要继承父类的注解需要该注解被 @Inherited 标识。
对于成员属性和方法来说,非重写的都会保持和父类一样的注解,而被实现的抽象方法,和被重写的方法都不会有父类的注解。


/**
 * @author Admin
 * 只有一个参数时,使用时可以不写参数名
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Deprecated
public @interface Annotation {

    String value() default "test";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值