1 JavaBean和 Builder模式应用场景是多个参数,而且可选部分时的对象构造,此时一般做饭是跌罗汉式的构造器声明,但是这样代码不够清晰也不简洁。
2 避免方法重载的意思是说避免相同参数,而且相同参数容易混淆的情况,例如假设都有一个参数,而且一个是int,一个是Integer,再如一个是Object,一个是数组;如果非要这么做,比如是升级程序时,改不了设计了,则可以让他们调用同一个处理逻辑。避免简单类型装换后就可以获得的重载方法。
消除此类重载最好的方法是重命名。而对于静态方法而言,可以用静态方法取代构造器,这样更清晰。
3 三十七条: 构造器中绝不定调用可被覆盖的方法。除非为继承而设计的API文档,否则不要暴露实现细节。
4 七十四条: 当父类没有实现Serializable接口的前提下, 子类如果需要序列化,父类必须提供无参构造器,以便反序列化,且此时不会自动序列化或者反序列化父类,如果逼着用户使用无参,正常势必多一些无用数据,那么可以用文中所有方法,在父类中抽出可传参数的一个初始化方法initialize(x,y,z), 覆盖子类的readObject来手工反序列化,并调用initialize().
(1)如果父类实现了Serializable接口,子类将自动得到可序列化特性。并且序列化子类时,父类的writeObject()和readObject()将得到调用。换言之,在序列化子类之前,父类将会自动被序列化。
(2)当父类没有实现Serializable接口的前提下,序列化子类时父类将不会被自动序列化。而反序列化子类时,父类的无参数构造方法将会被调用。
(3)如果想在序列化子类的同时也自动序列化父类中的字段,必须在子类的writeObject()和readObject()中相应实现。
所以记住一句话:为继承而设计的类,如果目前不需要序列化,那么最好提供一个无参构造器,因为或许以后它的子类需要序列化操作。
分享到:
相关推荐
Effective Java读书笔记.pdf
effective java 读书笔记,第二版自己摘要并翻译,以备速查。
《Effective Java》读书分享.pptx
《Effective Java》第三版中文版目录 第一章 介绍 1 第二章 创建和销毁对象 4 1 考虑用静态工厂方法替换构造器 4 2 当遇到多个构造器参
effective-java.pdf
Effective java 3 学习记录
Effective Java读书笔记,记载了大部分我觉的有用的东西,前半部分有代码说明,但后半部分的代码,太过琐碎,就没有整理
2021年EFFECTIVEJAVA读书笔记.docx
Effective-Java读书笔记,别人分享的
【Effective Java】阅读笔记markdown 文件
15. 使类和成员的可访问性最小化 16. 在公有类中使用访问方法而非公有域 17.使可变性最小化:不可变类
effective-java 配套代码
Effective Java Effective Java Effective Java
构建高效的Java企业级系统是项困难的工作。本书详细介绍企业级计算技术中的常见问题,并描述使用企业级Java平台技术处理这些问题的方法。本书以若干条建议、揸南的形式,言简意赅地介绍了J2EE开发中的微妙之处。无论...
Effective Enterprise Java
effectiveJava的笔记
基于Effective Java第二版的读书笔记,可以帮助你更好的阅读这边Java圣经,更快的理解其思想
Finix的精版Effective STL读书笔记