Effective Java 读后感
来源:互联网 发布:淘宝10天不发货会怎样 编辑:程序博客网 时间:2024/06/11 23:49
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 读后感
- 《Effective Java》 读后感(一)
- 《Effective Java》读后感(二)
- 《Effective Java》读后感(三)
- 《Effective Java》读后感(四)
- Effective Java系列读后感-总纲
- 《Effective Java》读后感(一)
- Effective Java系列读后感(一)-创建和销毁对象
- Effective Java系列读后感(三)-类和接口
- 《Effective C++》读后感
- effective C++ 读后感
- Effective C#读后感
- Effective C++ 读后感
- 《Effective C++》读后感
- 《Effective C++》读后感
- 《More Effective C++》读后感
- 《Effective python》第一章节读后感
- Effective Java系列读后感(二)-对于所有对象都通用的方法
- 多个Activity 之间 通过 SharedPreferences 传值
- 诊断 Java 代码: 轻松掌握 Java 泛型
- java中Socket应用
- 关于C++ 字节对齐 (结构体)
- 20110830
- Effective Java 读后感
- swing各组件重绘外观
- OpenSSL命令行工具验证数字签名
- 热塑性弹性体(来自百度百科)
- 说好的每日总结·2011年8月30日
- Trimslice版MeeGo智能电视
- android alertdialog的按钮点击后不消失
- 认识Android
- virtualbox四种联网方式在linux下的实现