注解的那些事儿(三)| 注解的使用及特殊情况

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

其实自定义注解使用也非常简单,像我们上篇文章定义的一个 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 的属性时,应用这个注解时可以直接接属性值填写到括号内。

如果觉得文章还不错,记得点赞评论转发哦。


推荐阅读

长按关注公众号,查看更多优质文章

640?wx_fmt=jpeg

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值