改善Java程序的151个建议 6-10章
文章目录
6. 覆写变长方法也循规蹈矩
覆必须满足的条件
- 重写方法不能缩小访问权限
- 参数列表必须与被重写方法相同
- 参数类型相同
- 参数数量相同
- 参数顺序相同
- 返回类型必须与被重写的方法相同或是其子类
- 重写方法不能抛出新的异常,或者超出父类范围的异常,但是可以抛出更少,更有限的异常或者不抛异常
反面示例
精彩分析
7. 警惕自增的陷阱
试问count = ?
答案分析
8. 不要让旧语法困扰你
9. 少用静态导入
- 静态导入是把双刃剑
- 正确使用,可减少了代码量,而且代码的可读性也提高了,这也是静态导入用到正确地方所带来的好处
- 使用不当,会使程序混乱,增加阅读难度
使用原则
- 不使用*(星号)通配符,除非是导入静态常量类(只包含常量的类或接口)。
- 方法名是具有明确、清晰表象意义的工具类。
- 何为具有明确、清晰表象意义的工具类?
- 示例
- 示例
- 何为具有明确、清晰表象意义的工具类?
10. 不要在本类中覆盖静态导入的变量和方法
如果一个类中的方法及属性与静态导入的方法及属性重名会出现什么问题呢?
- 编译不会报错
- 但是,不知道具体调用了哪个方法
- 因为编译器有最短路径原则
呢?
- 编译不会报错
- 但是,不知道具体调用了哪个方法
- 因为编译器有最短路径原则
因此,如果变更一个被静态导入的方法,最好的办法是在原始类中重构,而不是在本类中覆盖。