Effective Java 第二章:创建和销毁对象
来源:互联网 发布:linux servlet 教程 编辑:程序博客网 时间:2024/06/06 01:52
第2条:遇到多个构造器参数时要考虑用构建器
- JavaBeans模式
做法:对类中的成员变量提供set方法
缺点:阻止了把类做成不可变的可能 - builder模式
做法:类中提供一个名为Builder的内部类,该类包含一个构造器,参数为外部类中必须初始化的成员变量。同时还要有外部类中成员变量的set方法(方法名不一定含有set字样),而且这些方法返回”自己”(this)。最后要有一个build方法,该方法返回一个新创建的外部类对象,并把”自己”作为初始化参数。外部类的构造函数要有一个Builder对象作为参数,把Builder对象中的数据传给自己的成员变量。
class Student {private String name;private String number;private String id;private double weight;class Builder { private String name; private String number; private String id = ""; private double weight = 0; public Builder(String val_1, String val_2) { name = val_1; number = val_2; } public Builder id(String val) { id = val; return this; } public Builder weight(double val) { weight = val; return this; } public Student build() { return new Student(this); }}private Student(Builder builder) { name = builder.name; number = builder.number; id = builder.id; weight = builder.weight;}}
创建Student对象的语法如下:
Student student = new Studnet.Builder("l", "5").id("1").weight(1).build();
注:如果类的构造器或者静态工厂中具有多个参数,设计这种类时Builder模式就是种不错的选择。
- JavaBeans模式
第4条:通过私有构造器强化不可实例化的能力
- 如果一个类被设计成不可实例化的,那么把这个类的构造器设置为private是最好的选择。如果同时还不想被子类化,那么构造器中就抛异常,因为子类的构造器会显示或隐式的调用父类的构造器。
第5条:避免常见不必要的对象
- 通过这种方法创建对象:
String example = new String("string");
首先”string”是一个实例,new又创建了一个实例,所以这种语句一共创建了两个实例,但是我们使用到了一个。所以不推荐这个方法。 - 优先使用基本数据类型而不是装箱类型,即使用int而不是Integer,使用long而不是Long。要当心无意识的自动装箱。(每次对装箱类型改变数据时,都会创建一个装箱实例。)
public static void main(String[] args) {Long sum = 0L;for (long i = 0; i < Integer.MAX_VALUE; ++i) { sum += i;}System.out.println(sum);}
这个例子中,每次往Long sum中增加long时构造一个Long实例。
- 通过这种方法创建对象:
阅读全文
0 0
- [Effective Java]第二章 创建和销毁对象
- effective java 读书笔记---第二章创建和销毁对象
- Effective Java 第二章:创建和销毁对象
- Effective Java 2nd 阅读 第二章 创建和销毁对象
- Effective Java读书笔记——第二章 创建和销毁对象
- Effective Java阅读笔记(一)——第二章 创建和销毁对象
- Effective Java(02)创建和销毁对象
- effective java(创建和销毁对象)
- effective java 创建和销毁对象
- effective java :创建和销毁对象
- Effective Java-1 创建和销毁对象
- 《Effective Java》创建和销毁对象
- 【Effective Java】创建和销毁对象
- Effective Java:创建和销毁对象
- Effective Java 创建和销毁对象
- effective java:创建和销毁对象
- Effective Java:创建和销毁对象
- Effective Java:创建和销毁对象
- 使用nginx的tcp负载解决exchange2016的客户端访问负载
- Json解析
- 【theano-windows】学习笔记十五——受限玻尔兹曼机
- 数据结构实验之二叉树七:叶子问题
- Linux安装Jenkins
- Effective Java 第二章:创建和销毁对象
- impala自定义udf函数
- java基础 3.面向对象
- 吴恩达神经网络和深度学习课程自学笔记(七)之超参数调试,Batch正则化和程序框架
- 听说iPhone X到货了,识别体验是不是科技感爆棚?
- getViewTypeCount 与 addScrapView 的crash
- 淘淘商城内容管理模块内容添加
- Java 序列化对象为字符串 然后反序列化为对象
- Spring --AOP+Aspectj