[code="java"]
map = (((HashSet)this) instanceof LinkedHashSet ?
new LinkedHashMap(capacity, loadFactor) :
new HashMap(capacity, loadFactor));
[/code]
这是HashSet中readObject的一段代码
LinkedHashSet是HashSet的子类,这里却在instanceof前对this用了强制转换
虽说LinkedHashSet用的也是这段代码,但这里的强制转换怎么看都觉得有点别扭似的
按小弟的理解,readObject应该是new了之后就使用,那this的类型也就该是new的类型吧?
又或者说是为了容错?为了编码的方便理解?
小弟学java还是新手,希望各位高手们不吝指教一下,谢谢