• JAVA 注解的学习和对Spring注解的理解


    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28364999/article/details/79581199
    注解的作用
    1》生成文档,比如我们用的ide里面会自动加上比如@param,@return,@author等注解。

    2》编译时格式检查。这个最常见的是@override,@SuppressWarnings等等。

    3》跟踪代码依赖性,实现替代配置文件功能。

    元注解
    在包 java.lang.annotation 中包含所有定义【自定义注解】所需用到的原注解和接口。如接口 java.lang.annotation.Annotation 是所有注解继承的接口,并且是自动继承,不需要定义时指定,类似于所有类都自动继承Object。查看Documented.class,可以看到这是个借口。它有三个注解(@Documented,@Retention,@Target),除此外,还有@Inherited,构成4个元注解。

    @Documented 将此注解包含在 javadoc 中 ,它代表着此注解会被javadoc工具提取成文档。

    在doc文档中的内容会因为此注解的信息内容不同而不同。相当与@see,@param 等。

    @Retention 表示在什么级别保存该注解信息。可选的参数值在枚举类型 RetentionPolicy 中,包括: 
              RetentionPolicy.SOURCE 注解将被编译器丢弃 
              RetentionPolicy.CLASS 注解在class文件中可用,但会被VM丢弃 
              RetentionPolicy.RUNTIME VM将在运行期也保留注释,因此可以通过反射机制读取注解的信息。

    @Target 表示该注解用于什么地方,可能的值在枚举类 ElemenetType 中,包括: 
              ElemenetType.CONSTRUCTOR 构造器声明 
              ElemenetType.FIELD 域声明(包括 enum 实例) 
              ElemenetType.LOCAL_VARIABLE 局部变量声明
              ElemenetType.ANNOTATION_TYPE 作用于注解量声明
              ElemenetType.METHOD 方法声明
              ElemenetType.PACKAGE 包声明 
              ElemenetType.PARAMETER 参数声明 
              ElemenetType.TYPE 类,接口(包括注解类型)或enum声明 

    @Inherited 允许子类继承父类中的注解。

    具体实例参考点击打开链接的例2

    总结
    1、所有的注解类都隐式继承于 java.lang.annotation.Annotation,注解不允许显式继承于其他的接口。

    2、注解不能直接干扰程序代码的运行,无论增加或删除注解,代码都能够正常运行。Java语言解释器会忽略这些注解,而由第三方工具负责对注解进行处理。

    3、一个注解可以拥有多个成员,成员声明和接口方法声明类似,这里,我们仅定义了一个成员,成员的声明有以下几点限制:
    a)   成员以无入参无抛出异常的方式声明,如boolean value(String str)、boolean value() throws Exception等方式是非法的;
    b)   可以通过default为成员指定一个默认值,如String level() default "LOW_LEVEL"、int high() default 2是合法的,当然也可以不指定默认值;
    c)   成员类型是受限的,合法的类型包括原始类型及其封装类、String、Class、enums、注解类型,以及上述类型的数组类型。如ForumService value()、List foo()是非法的。
    d)   如果注解只有一个成员,则成员名必须取名为value(),在使用时可以忽略成员名和赋值号(=),如@Description("使用注解的实例")。注解类拥有多个成员时,如果仅对value成员进行赋值则也可不使用赋值号,如果同时对多个成员进行赋值,则必须使用赋值号,如@DeclareParents (value = "NaiveWaiter", defaultImpl = SmartSeller.class)。
    e)   注解类可以没有成员,没有成员的注解称为标识注解,解释程序以标识注解存在与否进行相应的处理;
    ---------------------
    作者:浮生丶丶
    来源:CSDN
    原文:https://blog.csdn.net/qq_28364999/article/details/79581199
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    如何测试一个纸杯?
    你对测试最大的兴趣在哪里?为什么
    您认为在测试人员同开发人员的沟通过程中,如何提高沟通的效率和改善沟通的效果?维持测试人员同开发团队中其他成员良好的人际关系的关键是什么?
    BUG管理工具的跟踪过程(用BugZilla为例子
    说说你对集成测试中自顶向下集成和自底向上集成两个策略的理解,要谈出它们各自的优缺点和主要适应于哪种类型测试
    你认为做好测试计划工作的关键是什么
    单元测试、集成测试、系统测试的侧重点是什么?
    黑盒测试和白盒测试是软件测试的两种基本方法,请分别说明各自的优点和缺点!
    Python 运算符
    Python 基础数据类型
  • 原文地址:https://www.cnblogs.com/anyiz/p/10605538.html
Copyright © 2020-2023  润新知