注解

作者: CherryChenR | 来源:发表于2020-03-16 20:40 被阅读0次

一.概念

  • 用于说明程序,又称为Java标注。于jdk1.5开始引入。

二.作用

1.编译检查,如@Overrid
2.编写文档,如@Author
3.代码分析(利用反射)

三.使用

1. JDK预定义注解

1.1@Deprecated

用于标识过时方法

2.自定义注解

2.1格式

2.1.1 元注解(用于描述注解的注解)
  • @Retention
    描述注解的保留阶段。对应java代码经历的三个阶段:SOURCE,CLASS,RUNTIME
  • @Target
    描述注解作用的位置。使用了一个枚举类来定义。
public enum ElementType {
    /** 类,接口(包括注解类型)或枚举的声明 */
    TYPE,

    /** 属性的声明 */
    FIELD,

    /** 方法的声明 */
    METHOD,

    /** 方法形式参数声明 */
    PARAMETER,

    /** 构造方法的声明 */
    CONSTRUCTOR,

    /** 局部变量声明 */
    LOCAL_VARIABLE,

    /** 注解类型声明 */
    ANNOTATION_TYPE,

    /** 包的声明 */
    PACKAGE
}
  • @Document
    描述注解是否被抽取到api文档
  • @Inherited
    描述是否被子类继承
2.1.2注解声明
Public @Interface 注解名 {
   属性列表
} 
2.1.2.1 属性
  • 概念:注解中定义的成员方法。
  • 返回值类型:基本数据类型String枚举类注解以上类型的数组
  • 使用注意:如果定义了属性,并且没有设置默认值的话,再使用时必须给属性赋值。以下是设置默认值的示例:
Public @Interface XXX{
  String name default "萨拉瓦";
}

四.本质

注解其实是自动继承java.lang.annotation.Annotation的接口。

五.在程序中获取注解中的属性值

  1. 获取注解定义位置的对象(Field,Method,Class...)
  2. 获取指定的注解对象
    XX.getAnnotation(class)
    3.调用注解抽象方法,获取配置的值

六.特殊语法

六.特殊语法部分转载自:https://blog.csdn.net/xsp_happyboy/article/details/80987484

特殊语法一:

如果注解本身没有注解类型元素(属性),那么在使用注解的时候可以省略(),直接写为:@注解名,它和标准语法@注解名()等效!

@Retention(RetentionPolicy.RUNTIME)
@Target(value = {ElementType.TYPE})
@Documented
public @interface FirstAnnotation {
}


//等效于@FirstAnnotation()
@FirstAnnotation
public class JavaBean{
    //省略实现部分
}

特殊语法二:

如果注解本本身只有一个注解类型元素,而且命名为value,那么在使用注解的时候可以直接使用:@注解名(注解值),其等效于:@注解名(value = 注解值)

@Retention(RetentionPolicy.RUNTIME)
@Target(value = {ElementType.TYPE})
@Documented
public @interface SecondAnnotation {
  String value();
}



//等效于@ SecondAnnotation(value = "this is second annotation")
@SecondAnnotation("this is annotation")
public class JavaBean{
  //省略实现部分
}

特殊用法三:

如果注解中的某个注解类型元素是一个数组类型,在使用时又出现只需要填入一个值的情况,那么在使用注解时可以直接写为:@注解名(类型名 = 类型值),它和标准写法:@注解名(类型名 = {类型值})等效!

@Retention(RetentionPolicy.RUNTIME)
@Target(value = {ElementType.TYPE})
@Documented
public @interface ThirdAnnotation {
    String[] name();
}



//等效于@ ThirdAnnotation(name = {"this is third annotation"})
@ ThirdAnnotation(name = "this is third annotation")
public class JavaBean{
    //省略实现部分
}

特殊用法四:

如果一个注解的@Target是定义为Element.PACKAGE,那么这个注解是配置在package-info.java中的,而不能直接在某个类的package代码上面配置。

相关文章

  • 注解学习笔记

    什么是注解注解分类注解作用分类 元注解 Java内置注解 自定义注解自定义注解实现及使用编译时注解注解处理器注解处...

  • 注解与反射

    注解 声明一个注解类型 元注解 在定义注解时,注解类也能够使用其他的注解声明。对注解类型进行注解的注解类,我们称之...

  • 1.8 Java 注解annotation

    1.1 注解声明 Java注解Annotation,有声明注解和元注解 元注解:Java提供的元注解,所谓元注解就...

  • 注解的使用

    元注解 注解 注解本质就是接口: 元注解:修饰注解的注解 自定义注解 Text.java FruitName.ja...

  • 注解

    Java注解 注解 元注解 自定义注解 元注解:负责注解其他注解 共有4个标准的meta-annotation类型...

  • Spring高级应用之组合注解和元注解

    1.核心概念: 元注解:可以注解在其他注解上的注解;被注解的注解成为组合注解; 2.组合注解的定义步骤 定义组合注...

  • 2016.10.13-关于注解的自定义和注解的解析

    注解可以分为:1、标识性注解(没有成员变量) 2、注解 3、元注解(注解的注解) 1、注解的自定义 自定义注解的格...

  • 自定义注解

    注解分类 1、代码注解2、编译时注解3、运行时注解 注解范例 使用注解的类 注解解析类 注解实战 需求1、有一张用...

  • 【JAVA】注解

    元注解 用来定义、声明注解的注解。 @Inherited注解 使用此注解声明出来的自定义注解,在使用此自定义注解时...

  • Spring Boot常用注解

    注解速览 配置加载相关 Bean 声明注解 Bean 注入注解 SpringMVC 注解 MyBatis 注解 配...

网友评论

      本文标题:注解

      本文链接:https://www.haomeiwen.com/subject/nqroehtx.html