第40条 坚持使用Override注解
- 应该在你想要覆盖超类声明的每个方法声明中使用
@Override
注解,加上这个注解可以在编译时计时发现错误 - 如果是实现抽象方法,不写
@Override
注解IDE不会警告,但是这样做没什么坏处
思考
-
@Override
注解应该是编程时结束到的最多的注解了,我自己喜欢所有的重写以及实现接口方法都会加上这个注解,有可能没有作用,总归是一个好的习惯 - 实现抽象方法的时候最好也是加上
@Override
,举一个比较极端的例子,一个抽象类继承了另一个抽象类,可能只实现了其中一个抽象方法,这时候如果不小心方法名称或者参数写错了,其实就相当于没有实现任何抽象方法,不加@Override
依然不容易检查出来这个错误
TMS里面有很多代码,好像OrderDao里面就有很多方法没有使用@Override
注解,打开的时候IDEA会报非常多的警告
第41条 用标记接口定义类型
- 标记接口(marker interface)是没有包含方法声明的接口,而只是指明一个类实现了具有某种属性的接口。例如
Serializable
- 标记接口的优点:
- 标记接口定义的类型是由被标记类的实例实现的。比如
class A implements Serializable
,那么所有使用Serializable
作为参数的地方都可以用A - 可以被更加精确的锁定。使用注解可以加在任何类上,如果一个标记只适用于特殊接口的实现,就可以使用标记接口。比如
Set
继承于Collection
,它没有实现任何Collection
的方法。Set
的存在依据就是标记这个接口的所有实现类都是集合内元素唯一的
- 标记接口定义的类型是由被标记类的实例实现的。比如
- 注解的优点就是"更大注解机制的一部分"。如果标记要适用于任何元素,不只是类和接口,则只能选择注解。住过只应用于类和接口
ElementType.Type
,则要考虑标记接口
思考
- 标记接口确实是一个比较新颖的用法,之前提到标记只会想到注解,这里提到了另外一个新的思路,碰到了使用场景可以考虑下
- 提到标记首先想到的都是Spring框架,这个框架使用的还是注解,主要可能考虑的还是灵活性的问题。
@Bean
注解可以用在类和方法上,主要是用在方法上的时候可以非常灵活的先执行一些逻辑再创建Bean(当然目前没有看到过有人在创建Bean之前运行了逻辑)。这种模式还带来了一个很好的点,就是像我们的项目,非常庞大,如果Bean的定义分散在各个角落一个是不规范同一,还有就是项目初始化需要扫描的位置太多,启动会更加笨重。所以我们可以把每一个Module的Bean定义统一在特定的文件里,这也是使用标记接口不太容易达到的功能
网友评论