Java 注解(详细学习笔记)

注解

注解英文为Annotation

  • Annotation是JDK5引入的新的技术

  • Annotation的作用:

    • 不是程序本身,可以对程序做出解释
    • 可以被其他程序(比如编译器)读取。
  • Annotation的格式:

    注解是以@注解名在代码中存在的,还可以添加一些参数值,例如:@SuppressWarnings(value="unchecked")

  • Annotation在那里使用

    可以附加在package、class、method、field等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问。

1.常用注解

(1)@Override 表示重写

(2)@Deprecated表示不推荐使用,存在更好方法,之后可以回淘汰。

(3)@SuppressWarnings表示镇压警告。

2.元注解

元注解的作用就是负责注解其他注解,Java定义了4个标准的meta-annotation类型,他们可以被用来提供对其他annotation类型作说明。

这些注解和他们所支持类在java.lang.annotation包中可以找到

  • (1)@Target

    用来描述注解的使用范围(即:被描述的注解可以用在说明地方)

  • (2)@Retention

    表示在什么级别保存该注释信息,用来描述注解的生命周期

    SOURCE<CLASS<RUNRIME

  • (3)@Document

    说明该注解将被包含在javadoc中

  • (4)@Inherited

    说明子类可以继承父类中的注解

2.1@Target

@Target的参数是一个枚举类型的数组,ElementType

public enum ElementType {
    TYPE,			//类、接口(包括注释类型)或枚举声明
    FIELD,			//字段声明(包括enum常量)
    METHOD,			//方法声明
    PARAMETER,		//参数
    CONSTRUCTOR,	//构造函数声明
    LOCAL_VARIABLE,	//局部变量说明
    ANNOTATION_TYPE,//注释类型声明
    PACKAGE,		//包说明
    TYPE_PARAMETER,	//类型参数声明
    TYPE_USE		//类型使用
}

2.2 @Retention

表示在什么级别保存该注释信息,用来描述注解的生命周期,它的参数也是一个枚举类型RetentionPolicy

public enum RetentionPolicy {
    //注释将被编译器丢弃。
    SOURCE,
    //注释将由编译器记录在类文件中,JVM不会保留(默认)
    CLASS,
    // 运行时(因此它们可以反射式地读取)
    RUNTIME
}

3.自定义注解

  • @interface 用来声明一个注解,格式:public @interface 注解名{ 定义内容 }

  • 其中每一个方法实际上是声明了一个配置参数

  • 方法的名称就是参数的名称

  • 返回值类型就是参数的类型(返回值只能是基本类型、Class、String、enum

  • 可以通过default来声明参数的默认值

  • 如果只用一个参数成员,一般参数名称为value

  • 注解元素必须有值,我们定义注解元素时,经常使用空字符串,0作为默认值。

@Target({ElementType.METHOD, ElementType.TYPE, ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented //生成到javadoc中
@Inherited  // 子类可以继承
public @interface MyAnnotation {
    String[] value() default {};
    int id() default 0;
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

卑微小钟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值