偷窥AbstractCollection类的toString方法,没看懂,求解
偷看AbstractCollection类的toString方法,没看懂,求解
public String toString()
{
Iterator localIterator = iterator();
if (!(localIterator.hasNext()))
return "[]";
StringBuilder localStringBuilder = new StringBuilder();
localStringBuilder.append('[');
while (true)
{
Object localObject = localIterator.next();
localStringBuilder.append((localObject == this) ? "(this Collection)" : localObject);
if (!(localIterator.hasNext()))
return ']';
localStringBuilder.append(',').append(' ');
}
}
set的toString返回的是[01,02,03...]结构的字符串,也就是说如果写成return localStringBuilder+"]",返回字符串就ok了,而这里没有返回字符串,返回']'字符,而没有报错。我把这段代码复制到自己的工程中就报错,这是怎么回事?不该偷看,真诡异!
------解决思路----------------------
这是JDK1.6的AbstractCollection类的toString方法
public String toString()
{
Iterator localIterator = iterator();
if (!(localIterator.hasNext()))
return "[]";
StringBuilder localStringBuilder = new StringBuilder();
localStringBuilder.append('[');
while (true)
{
Object localObject = localIterator.next();
localStringBuilder.append((localObject == this) ? "(this Collection)" : localObject);
if (!(localIterator.hasNext()))
return ']';
localStringBuilder.append(',').append(' ');
}
}
set的toString返回的是[01,02,03...]结构的字符串,也就是说如果写成return localStringBuilder+"]",返回字符串就ok了,而这里没有返回字符串,返回']'字符,而没有报错。我把这段代码复制到自己的工程中就报错,这是怎么回事?不该偷看,真诡异!
------解决思路----------------------
这是JDK1.6的AbstractCollection类的toString方法
public String toString() {
Iterator<E> i = iterator();
if (! i.hasNext())
return "[]";
StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
E e = i.next();
sb.append(e == this ? "(this Collection)" : e);
if (! i.hasNext())
return sb.append(']').toString();
sb.append(", ");
}
}