zoukankan      html  css  js  c++  java
  • 注解的那些事儿(三)| 注解的使用

    文章首发于【博客园-陈树义】,点击跳转到原文《注解的那些事儿(三)| 注解的使用》

    学会了如何定义自定义注解,那还要会用起来才行。

    其实自定义注解使用也非常简单,像我们上篇文章定义的一个 Sweet 注解。

    public @interface Sweet {
        String sweetLevel();
    }
    

    要使用它只需要像下面这样就可以了。

    public class SweetDemo { 
        @Sweet (sweetLevel="Level.05")
        public void sweetWithDoc() {
            System.out.printf("sweet With Doc.");
        } 
    }
    

    但是有时候注解会有些特殊用法,我们需要了解一下。

    第一种情况:如果没有任何注解属性,那么可以省略注解的中括号。

    在上面的例子中,如果 @Sweet 注解没有任何属性。

    public @interface Sweet {
    }
    

    那么我们使用的时候就可以直接写上直接名称,不需要中括号。

    public class SweetDemo { 
        @Sweet
        public void sweetWithDoc() {
            System.out.printf("sweet With Doc.");
        } 
    }
    

    第二种情况:注解属性有默认值,可以不进行赋值操作。

    在上面的 SweetDemo 中会发现我们在使用 @Sweet 注解的时候,手动给 sweetLevel 属性赋值。如果没有赋值,那么会报错。

    但是如果在 @Sweet 注解声明的时候,给 sweetLevel 属性定义一个默认值,那么在使用的时候就不需要赋值操作了。

    例如我们重新定义 Sweet,让你有一个「Level.03」的默认值。

    public @interface Sweet {
        String sweetLevel();
    }
    

    文章首发于【博客园-陈树义】,点击跳转到原文《注解的那些事儿(三)| 注解的使用》

    那么在使用的时候就可以直接这样使用:

    public class SweetDemo { 
        @Sweet
        public void sweetWithDoc() {
            System.out.printf("sweet With Doc.");
        } 
    }
    

    这个时候,sweetLevel 属性就是默认值:Level.03。

    第三种情况:注解内有且仅有一个名字为 value 的属性时,应用这个注解时可以直接接属性值填写到括号内。

    例如上面的 @Sweet 注解改写成这样:

    public @interface Sweet {
        String value();
    }
    

    那么在使用的时候,我们本来应该这样用:

    public class SweetDemo { 
        @Sweet(value = "Level.03")
        public void sweetWithDoc() {
            System.out.printf("sweet With Doc.");
        } 
    }
    

    但是我们可以忽略 value 属性名的声明,直接这么用:

    public class SweetDemo { 
        @Sweet("Level.03")
        public void sweetWithDoc() {
            System.out.printf("sweet With Doc.");
        } 
    }
    

    总结

    下面就来总结一下,其实自定义注解使用不复杂,但有下面三种情况比较特殊:

    • 注解没有任何注解属性,那么可以省略注解的中括号。
    • 注解的注解属性有默认值,可以不进行赋值操作。
    • 注解内有且仅有一个名字为 value 的属性时,应用这个注解时可以直接接属性值填写到括号内。

    文章首发于【博客园-陈树义】,点击跳转到原文《注解的那些事儿(三)| 注解的使用》

  • 相关阅读:
    交叉排序
    交叉排序
    数据结构实验之串三:KMP应用
    数据结构实验之串三:KMP应用
    数据结构实验之串一:KMP简单应用
    数据结构实验之串一:KMP简单应用
    走迷宫
    走迷宫
    走迷宫
    走迷宫
  • 原文地址:https://www.cnblogs.com/chanshuyi/p/annotation_serial_03_how_to_use.html
Copyright © 2011-2022 走看看