闲来无事,开始研究JDK源码(jdk 1.5 b2),先找了一个最简单的java.lang.Boolean开始解剖。
由于水平有限,难免有不少错误,还请大家指正!
首先我们剔除所有的方法和静态变量,Boolean的核心代码如下:
public final class Boolean implements java.io.Serializable,Comparable
{
private final boolean value;
}
很明显,凡是成员变量都是final类型的,一定是immutable class,这个Boolean和String一样,一旦构造函数执行完毕,实例的状态就不能再改变了。
Boolean的构造函数有两个:
public Boolean(boolean value) {
this.value = value;
}
public Boolean(String s) {
this(toBoolean(s));
}
都很简单就不多说了。
另外注意到Boolean类实际上只有两种不同状态的实例:一个包装true,一个包装false ...