简单的Boolean源码
继承了java.io.Serializable, Comparable, 首先看看compareTo的实现,这里就可以看出源码果然比普通程序员的代码好
普通程序员一般会在这里直接写,这里还封装了一个compare方法,compare为静态方法,既可以给外部使用,也可以被compareTo复用,代码短小即为美。常量解析
享元模式的使用,达到多个对象都使用一份内存
真正存储value的地方,还是以boolean基本类型存储比较有趣的地方hashcode
这里使用的是2个数字固定数字作为hashcode,boolean才2个值,使用固定数字可以理解,可是为什么使用这2个数字呢?应该不是凭空捏造的把,于是只能网上找一下
具体链接可以看 http://stackoverflow.com/questions/3912303/boolean-hashcode
大概意思是:- 使用质素是因为假如要把Boolean指插入到hashtable中,如果不是质素的话可能会比较容易造成哈希冲突,上面也举例子了,
- 为什么不是比较小的质素呢?这考虑到复合对象的情况,符合对象计算hashcode的时候通常会把各个属性的hashcode相加然后再做hash,如果是比较小的质素,容易造成hash分布不均匀
- 有冲突吗?Boolean才2个值,这就考虑到把Boolean 放到一个map中了,map中也可以put其他对象
不得不敬佩这些开源源码的作者,考虑得如此周全。