随笔分类 - EffectiveJava第2版
EffectiveJava 2对所有对象通用的方法 11谨慎地覆盖clone
摘要:1 重点关注 1.1 使用场景 除非拷贝数组,或者做系统镜像相关,有些专家级的程序员从来不去覆盖clone方法,也从来不去调用它。 1.2 参考原型模式 https://www.cnblogs.com/1446358788-qq/p/11456714.html 1.3 奇怪 深拷贝的递归方法的使用
阅读全文
EffectiveJava 2对所有对象通用的方法 10始终要覆盖toString
摘要:1 重点关注 1.1 该节是作为建议,而非强制 1.2 代码演练3.1 1.3 替代方法:用json.toString替代 JSONObject.toJSON(mapCert)) https://i.cnblogs.com/articles/edit;postId=10765235 2 课程内容 2
阅读全文
EffectiveJava 2对所有对象通用的方法 9覆盖equals时总要覆盖hashCode
摘要:1 重点关注 1.1 本章核心 覆盖equals时总要覆盖hashCode,代码参考3.1 1.2 hashcode的散列函数针对不同数据类型的算法(3.1参考short类型) 一个好的散列函数通常倾向于“为不相等的对象产生不相等的散列码”,理想情况下,散列函数应该把集合中不相等的实例均匀地分布到所
阅读全文
EffectiveJava 1创建和销毁对象 7避免使用终结方法
摘要:1 重点关注 1.1 终止方法的写法 try finally 见3.1 1.2 终结方法的写法 finalize()见3.2 1.3 使用终结方法的场景 a 当对象的所有者忘记调用1.2显式终止方法时,终结方法可以充当安全网。(FileInputStream,FileOutputStream,Tim
阅读全文
EffectiveJava 1创建和销毁对象 6消除过期的对象引用
摘要:1 重点关注 1.1 通用方法避免过期对象的应用 消除过期引用的最好方法是让包含该引用的变量结束其生命周期。 如果使用最紧凑作用域范围定义每一个变量,这种情形自然而然的发生 1.2 消除过期对象的使用场景 a 栈的pop,需要我们手动清空,因为栈类自己管理内存 b 随着时间推移,过期缓存可以使用后台
阅读全文
EffectiveJava 1创建和销毁对象 5避免创建不必要的对象
摘要:1 重点关注 1.1 代码演练部分 1.2 本节精髓 不要错误的认为本条目介绍的内容暗示着”创建对象的代价非常昂贵,我们应该尽可能地避免创建对象” 相反,由于小对象的构造器只做很少量的事情,所以它们的创建和销毁的代价都是非常廉价的,尤其是在现代的的JVM实现上更是的如此。通过创建附加的对象,提升程序
阅读全文
EffectiveJava 1创建和销毁对象 4通过私有构造器强化不可实例化的能力
摘要:1 重点掌握 1.1 本节摘要 编写只包含静态方法和静态域的类,需要通过私有构造器强化不可实例化的能力 1.2 使用私有构造器的弊端 使得一个类不能被子类化。所有构造器必须显示或隐式调用超类构造器。子类没有可访问的超类构造器访问。参考3.2 1.3 本节demo 3.1 2 课程内容 2.1 使只有
阅读全文
EffectiveJava 1创建和销毁对象 2遇到多个构造器参数时考虑用构建器
摘要:1 重点掌握 1.1 3.1案例 1.2 实现构建模式的另一种形式 参考ddd领域设计 https://www.cnblogs.com/1446358788-qq/articles/15319451.html 创建对象的时候用factory工厂类创建(一定把必输项都带上),每次变更字段的时候,在En
阅读全文
EffectiveJava 1创建和销毁对象 3用私有构造器或枚举类型强化Singleton属性
摘要:0 重点掌握 0.1 单例模式如何完全安全 首先前提必须是饿汉式单例,才有安全可能性,原因参考设计模式单例模式。 饿汉式单例的代码demo 参见本节2.5 0.2 饿汉式和懒汉式区别 参靠设计模式单例模式,一个是类加载时就初始化,一个是不初始化,static静态代码块 0.3 如何理解:本节2.2和
阅读全文