美文网首页
Effective Java - 注解优先于命名模式

Effective Java - 注解优先于命名模式

作者: DZQANN | 来源:发表于2022-07-04 21:47 被阅读0次

第39条 注解优先于命名模式

  1. Java 1.5之前,一般使用命名模式(naming pattern)表明有些程序元素需要通过某种工具或者框架进行特殊处理。比如方法的前缀名同一用"test"等等

  2. @Repeatable可以让一个注解在同一个元素上多次使用:

    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.METHOD)
    @Repeatable(AnnotationTwo.class)
    public @interface AnnotationOne {
        Class<? extends Exception> value();
    }
    
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.METHOD)
    public @interface AnnotationTwo {
        AnnotationOne[] value();
    }
    
    public class Text {
    
        @AnnotationOne(RuntimeException.class)
        @AnnotationOne(NullPointerException.class)
        public void testTwoAnnotationMethod() {
        }
    
        @AnnotationOne(NullPointerException.class)
        public void testOneAnnotationMethod() {
        }
    }
    

    使用@Repeatable注解的辅佐用就是,当重复使用一个注解之后,就会变成@Repeatable注解里面配置的那个注解

    public static void main(String[] args) {
      Class<Text> clazz = Text.class;
      Method[] methods = clazz.getMethods();
      for (Method method : methods) {
        if (!method.getName().startsWith("test")) {
          continue;
        }
        System.out.println(method.getName());
        System.out.println(method.isAnnotationPresent(AnnotationOne.class));
      }
    }
    

    这个的执行结果是:false true@AnnotationOne在一个方法上重复使用之后变成了@AnnotationTwo,不过method.getAnnotationsByType(AnnotationOne.class)还是会返回两个的

  3. 有了注解就没有必要使用命名模式了

  4. 都应该使用Java平台所提供的与定义的注解类型

思考

  1. 注解主要是框架的时候会用到,业务代码里很少会碰到
  2. @Repeatable注解个人感觉副作用更多,使用的时候还需要每一个地方都判断出现了一次多次,让代码的复杂度提高了

相关文章

  • 第35条:注解优先于命名模式

    命名模式的缺点:1.文字拼写错误导致失败,测试方法没有执行,也没有报错 (JUNIT测试框架测试的方法要用test...

  • Java学习书

    《Java编程思想》 《大话设计模式》 《重构 改善既有代码的设计》,《effective java》 《深入理解...

  • 第三十九条:注解优先于命名模式

    根据经验,一般使用命令模式表明有些程序元素需要通过某种工具或者框架进行特殊处理。例如,在Java4发行版本之前,J...

  • 设计模式- 合成/组合原则

    《Effective Java》 复合优先于继承 与方法调用不同的是,继承打破了封装性。 上面的问题都来源于对方法...

  • 组合VS继承

    在Effective Java中明确有提到一种思想就是组合优先于继承。实际中我们可以这样理解,组合是把代码摊开,而...

  • Effective Java - 第6章 枚举和注解

    《Effective Java(第2版)》第6章 枚举和注解,整理的思维导图,文字版见:https://mubu....

  • JavaPoet的使用

    1.新建Java Library-- 命名为annotation, 新建注解ARouter 2.新建注解处理器Ja...

  • Effective Java 第三版——39. 注解优于命名模式

    Tips《Effective Java, Third Edition》一书英文版已经出版,这本书的第二版想必很多人...

  • Effective Java for Android

    Android 版《Effective Java》 翻译原文 Effective Java for Android...

  • ej3-0开端

    开始 编码多年,总有一些最佳实践,Java也是,比如设计模式,比如Effective Java 3 (ej3) 。...

网友评论

      本文标题:Effective Java - 注解优先于命名模式

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