Effective Java - 通过接口引用对象
2022-08-18 本文已影响0人
DZQANN
第63条 注意字符串拼接的性能
- 重复地使用字符串拼接操作符来拼接n个字符串,需要n的平方级的时间
- 为了获得可以接受的性能,请使用
StringBuilder
代替String
思考
- 如果是循环拼接字符串的话,需要使用
StringBuilder
。如果是O(1),及时使用了StringBuilder
,IntelliJ也是会推荐直接使用"+"拼接的
第64条 通过接口引用对象
-
如果有合适的接口类型存在,那么对于参数、返回值、变量和域来说,就都应该使用接口类型进行声明
// Good - uses interface as type Set<Son> sonSet = new LinkedHashSet<>(); // Bad - uses class as type! LinkedHashSet<Son> sonSet = new LinkedHashSet<>();
-
如果没有合适的接口存在,完全可以使用类而不是接口来引用对象
-
如果没有合适的接口,则使用类层次接口中提供了必要功能的最基础的类
思考
- 使用接口,如果替换了接口的实现,需要注意是否依赖了原接口的特性。比如从
LinkedHashMap
变为了HashMap
之后,需要检查逻辑是否依赖了顺序