快速了解-注解Annotation

描述

  • Annotation定义:注解是Java语言从JDK 5.0版本开始引入的一种技术。

  • Annotation作用

    • 注解不是程序本身,但可以对程序作出解释。这与注释(comment)类似,但注解可以被其他程序(如编译器)读取。

  • Annotation格式:注解在代码中以"@注释名"的形式存在,可以添加一些参数值,例如:@SuppressWarnings(value="unchecked")

  • Annotation使用位置:注解可以附加在包(package)、类(class)、方法(method)、字段(field)等上面,相当于给它们添加了额外的辅助信息。

  • Annotation访问方式:可以通过Java的反射机制编程实现对这些元数据的访问。

内置注解
  • 一些常常看见的

注解名称定义位置用途描述参数示例
@Overridejava.lang.Override适用于修饰方法,表示该方法声明打算重写超类中的另一个方法声明无需参数
@Deprecatedjava.lang.Deprecated用于修饰方法、属性、类,表示不鼓励程序员使用,通常因为存在危险或更好的选择无需参数
@SuppressWarningsjava.lang.SuppressWarnings用来抑制编译时的警告信息,需要添加参数使用@SuppressWarnings("all") @SuppressWarnings("unchecked") @SuppressWarnings(value={"unchecked", "deprecation"})

自定义注解

实例
//这个两个是元注解
​
@Target(ElementType.METHOD)
/*这个是 方法注解 (简单说这个注解用在方法上)*/
@Retention(RetentionPolicy.RUNTIME)
/*注解在源代码、类文件以及运行时都保留。。
*表示我们的注解在什么时候还可以生效
*(RetentionPolicy.RUNTIME > RetentionPolicy.CLASS > RetentionPolicy.SOURCE)
*/
public @interface test {
    String[] value() default {};
    Mode RequsetMode() default Mode.FORM;  
    Mode returnType() default Mode.FORM;  
    boolean isMyServlet() default false; 
}
  • 自定义注解的定义

    • 使用@interface关键字来声明自定义注解,它自动继承自java.lang.annotation.Annotation接口。

  • 注解的声明格式

    • 格式为:public @interface 注解名 {定义内容}

  • 注解方法

    • 注解中的每一个方法实际上是声明了一个配置参数。

    • 方法的名称代表参数的名称。

  • 参数类型

    • 返回值类型定义了参数的类型,只能是基本类型、ClassStringenum等。

  • 默认值

    • 可以使用default关键字来声明参数的默认值。

  • 参数成员

    • 如果注解只有一个参数成员,通常参数名为value

  • 注解元素的值

    • 注解元素在使用时必须有值,定义注解元素时,常用空字符串、0或其他默认值作为参数的默认值。

元注解
  • @Target

    • 作用:指定注解可以应用于哪些Java元素,如类、方法、构造函数、字段、参数、局部变量等。

    • 参数:

      @target(ElementType)

      枚举,可能的值包括:

      • ANNOTATION_TYPE:注解

      • CONSTRUCTOR:构造函数注解

      • FIELD:字段注解

      • LOCAL_VARIABLE:局部变量注解

      • METHOD:方法注解

      • PACKAGE:包注解

      • PARAMETER:参数注解

      • TYPE:类、接口(包括注解类型)

    • 定义位置:java.lang.annotation.Target

  • @Retention

    • 作用:定义注解的保留策略,即注解信息在何种阶段可用。

    • 参数:

      @Retention(RetentionPolicy)

      枚举,可能的值包括:

      • SOURCE:注解仅在源代码中保留,在编译时丢弃。

      • CLASS:注解在源代码和类文件中保留,但在运行时不可用。

      • RUNTIME:注解在源代码、类文件以及运行时都保留。

    • 定义位置:java.lang.annotation.Retention

  • @Documented

    • 作用:指示注解应该被包含在用户文档中。

    • 参数:无

    • 定义位置:java.lang.annotation.Documented

  • @Inherited

    • 作用:指示一个注解可以被子类继承。

    • 参数:无

    • 定义位置:java.lang.annotation.Inherited

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值