• Java注解


    什么是注解?

    注解,也被称为元数据(描述数据的数据<==>data about data).在Java1.5中被引入.注解可以将元数据保存在Java源代码中,并利用annotation API为自己的注解构造处理工具.此外,注解的优点还包括:更加干净易读的代码以及编译期类型检查等.

    三种内置注解

    @Override : 表示当前的方法覆盖超累中的方法.如果方法签名对不上,编译器就会发出错误提示.

    @Deprecated : 标在方法上表示方法已弃用(也可以说是表示已过期).

    @SuppressWarnings : 关闭不当的编译器警告.

    四种元注解

    元注解专门负责新注解的创建,在自建注释时使用

    @Target : 表示该注解可以用于什么地方.主要的ElementType参数包括:

      CONSTRUCTOR : 构造器的声明

      FIELD : 域(属性)声明,包括enum实例

      LOCAL_VARIABLE : 局部变量声明

      METHOD : 方法声明

      PACKAGE : 包声明

      PARAMETER : 参数声明

      TYPE : 类,接口(包括注解类型)或enum声明

      @Target注解可以指定多个ElementType,用逗号分隔,表示能应用于多个类型,如果省略掉@Target注解不用,则表示该注解可应用于所有的ElementType

    @Retention : 用来规定注解在哪一个级别可用,可选的RetentionPolicy参数包括:

      SOURCE : 源代码中,注解将被编译器丢弃.

      CLASS : 类文件中,会被VM丢弃.

      RUNTIME : 运行时,VM将在运行期也保留注解,因此可以通过反射机制读取注解的信息.

    @Documented : 将此注解包含在javadoc中

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

    自定义注解示例

    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    // @interface 表示声明一个注解
    // Test 是自定义注解的注解名
    public @interface Test {
        // 声明注解的元素,写法类似于接口的方法
        public int value();
        // 可以用default关键字为元素设定默认值
        public String description() default "no description";
        
        // *默认值限制* : 元素必须有值,要么具有默认值,要么使用注解时提供元素的值.
        // 默认值不能为null,为了绕开这个约束,我们可以定义一些特殊的值,例如空字符串
        // 或者负数,以此表示某个元素不存在;
        public String company() default "";
        public int age() default -1;
       
        // *注解元素的可用类型*
        // 所有基本类型(int, boolean, float等)
        // String
        // Class
        // enum
        // Annotation (注解也可以作为元素的类型,也就是说注解可以嵌套)
        // 以上类型的数组
        // 如果使用其他类型,编译器就会报错
     
        // 注解不支持继承,但可以在注解内嵌套注解实现相同的功能
        public TestAnnotation  testAnno() default @TestAnnotation(name="LiSi");
    
        // 快捷方式 : 如果注解只有value元素没有默认值,其他元素全都有默认值
        //               即在应用该注解时,value元素是唯一需要赋值的一个元素
        //               那么在使用value注解时,无需使用名-值对的方法,
        //               直接在括号内给出value元素所需的值即可(必须将此元素命名为value)
        //               例如 : @RequestMapping("/login")
    
        // 没有元素的注解被称为标记注解(marker annotation)
    }
    

    1.默认值限制

    2.注解元素可用类型

    3.注解不支持继承

    4.快捷方式

    5.标记注解

    注解的使用

    参考Spring, SpringMVC中注解的使用.或者比如@Override注解.

    注解处理器

    未完待续

    使用apt处理注解 

    未完待续

    Thinking in Java读到了629页

  • 相关阅读:
    VB中Null、Empty、Nothing及vbNullString的区别
    hs_err_pidXXX.log 解读
    测试Windows Live Writer——开博
    BCPC2021预赛
    软件设计模式之策略模式(Strategy) 壹
    留言板 壹
    友链 壹
    正则表达式练习 壹
    SpringBoot+Mybatis+自定义注解+Atomikos+实现多源数据库切换和分布式事务
    Dependency failed for File System Check on /dev/vdb1 服务器配置升级
  • 原文地址:https://www.cnblogs.com/jinyu59/p/10721017.html
Copyright © 2020-2023  润新知