美文网首页
Effective Java - 用标记接口定义类型

Effective Java - 用标记接口定义类型

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

第40条 坚持使用Override注解

  1. 应该在你想要覆盖超类声明的每个方法声明中使用@Override注解,加上这个注解可以在编译时计时发现错误
  2. 如果是实现抽象方法,不写@Override注解IDE不会警告,但是这样做没什么坏处

思考

  1. @Override注解应该是编程时结束到的最多的注解了,我自己喜欢所有的重写以及实现接口方法都会加上这个注解,有可能没有作用,总归是一个好的习惯
  2. 实现抽象方法的时候最好也是加上@Override,举一个比较极端的例子,一个抽象类继承了另一个抽象类,可能只实现了其中一个抽象方法,这时候如果不小心方法名称或者参数写错了,其实就相当于没有实现任何抽象方法,不加@Override依然不容易检查出来这个错误

TMS里面有很多代码,好像OrderDao里面就有很多方法没有使用@Override注解,打开的时候IDEA会报非常多的警告

第41条 用标记接口定义类型

  1. 标记接口(marker interface)是没有包含方法声明的接口,而只是指明一个类实现了具有某种属性的接口。例如Serializable
  2. 标记接口的优点:
    • 标记接口定义的类型是由被标记类的实例实现的。比如class A implements Serializable,那么所有使用Serializable作为参数的地方都可以用A
    • 可以被更加精确的锁定。使用注解可以加在任何类上,如果一个标记只适用于特殊接口的实现,就可以使用标记接口。比如Set继承于Collection,它没有实现任何Collection的方法。Set的存在依据就是标记这个接口的所有实现类都是集合内元素唯一的
  3. 注解的优点就是"更大注解机制的一部分"。如果标记要适用于任何元素,不只是类和接口,则只能选择注解。住过只应用于类和接口ElementType.Type,则要考虑标记接口

思考

  1. 标记接口确实是一个比较新颖的用法,之前提到标记只会想到注解,这里提到了另外一个新的思路,碰到了使用场景可以考虑下
  2. 提到标记首先想到的都是Spring框架,这个框架使用的还是注解,主要可能考虑的还是灵活性的问题。@Bean注解可以用在类和方法上,主要是用在方法上的时候可以非常灵活的先执行一些逻辑再创建Bean(当然目前没有看到过有人在创建Bean之前运行了逻辑)。这种模式还带来了一个很好的点,就是像我们的项目,非常庞大,如果Bean的定义分散在各个角落一个是不规范同一,还有就是项目初始化需要扫描的位置太多,启动会更加笨重。所以我们可以把每一个Module的Bean定义统一在特定的文件里,这也是使用标记接口不太容易达到的功能

相关文章

网友评论

      本文标题:Effective Java - 用标记接口定义类型

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