通常来说类都有不止一个构造函数。随着时间推移,成员变量的增加,构造函数的个数也会不断的增加。预防这种情况的最好方法是,在声明变量的时候就进行初始化,而不是在每个构造函数中进行。
//初始化变量时声明public class MyClass{ private Listlabels = new List ();}
这样一来,无论MyClass类型添加多少个构造函数,labels变量都可以正确的初始化。编译器将在每个构造函数的最开始位置生成代码来执行你为实例成员变量定义的所有初始化器。
使用初始化器是一种最简单的、能够避免类型中存在未初始化变量的做法,但以下3
种情况,应避免使用初始化器: - 想初始化对象为0或null时。系统会默认初始化对象为0或null,若自己再进行赋值,就多此一举
- 需要对同一个对象执行不同的初始化方式。使用初始化器语法的前提是,所有的构造函数都会将该变量设为同一个值。
//以下代码就会创建了2个List,并把第一个List立即变成垃圾public class MyClass{ private Listlabels = new List (); public MyClass() { } public MyClass(int size) { labels = new List (size); }}
- 需要方便进行异常处理。初始化器无法用try包裹。对象初始化器执行的过程中产生的所有异常都会传递到对象外。在类的内部无法进行修复