Effective Java 笔记
2019-08-29 本文已影响0人
莫库施勒
1,使用Builder 替换构造函数
2,对于类似与Stack 这样的集合类,除了修改索引,对于不使用的要及时reset,缓存中也是,同时还有自动装箱
3,对于Singleton构造函数要考虑到反射和序列化
4,工厂方法可以使用 Supplier接口
5,对于资源的引用需要实现的Java 7 中的 AutoCloseable 接口,使用try-with-resources管理异常
try(BufferedReader reader = new BufferedReader(new InputStreamReader(
new FileInputStream(new File("/home/fuhd/text")),"UTF8"),1024)){
System.out.println(reader.readLine()); //这里直接读一行
}
6,修改了equals 方法 ,必须修改 hashCode 方法
7,Java 9 提供了模块访问级别,非模块内不可访问
8,组合和继承的一个区别就是当一个子类继承父类的一类方法,比如父类HashSet 的 addAll 调用 add 方法,而子类可能同时修改 add 和 addAll 方法,会导致 add 方法被调用两次,这种情况下是不适合用 继承的,而应该用组合,所以在public 函数中尽量不要调用 public 函数
9,构造函数中不能调用可被覆盖的方法
10,父类构造函数没有参数,子类没有调用 super 的时候,还是会运行父类的构造函数