import java.util.*;
class CollectionTest {
public static void main(String args[]){
Collection c = new HashSet();
c.add(new Integer(5));
c.add("whj");
c.add("fjsldk");
c.add(new Double(3));
System.out.println (c);/**
* 打印c时直接遍历了 调用了c.toString()方法
*但是怎么实现的呢?
*/
}
}
我就不明白当打印这个c时,应该默认自动调用toString()方法,即c.toString(),可是打印的结果是[3.0,whj,fjsldk,5]这种形式的,但这个toString()方法是在哪里重构的呢?按理说是应该在collection中重写的,但API中怎么找不到呢,如果说继承了Object中的toString(),但也不会显示出了像上面结果中的那种中括号形式的啊?怎么回事呢?
class CollectionTest {
public static void main(String args[]){
Collection c = new HashSet();
c.add(new Integer(5));
c.add("whj");
c.add("fjsldk");
c.add(new Double(3));
System.out.println (c);/**
* 打印c时直接遍历了 调用了c.toString()方法
*但是怎么实现的呢?
*/
}
}
我就不明白当打印这个c时,应该默认自动调用toString()方法,即c.toString(),可是打印的结果是[3.0,whj,fjsldk,5]这种形式的,但这个toString()方法是在哪里重构的呢?按理说是应该在collection中重写的,但API中怎么找不到呢,如果说继承了Object中的toString(),但也不会显示出了像上面结果中的那种中括号形式的啊?怎么回事呢?
synchronized (this) {
print(x);
newLine();
}
}
调用print(Object x)和newLine() public void print(Object obj) {
write(String.valueOf(obj));
}
再调用write(String)
顺着找应该可以找到吧
StringBuffer buf = new StringBuffer();
buf.append("["); Iterator<E> i = iterator();
boolean hasNext = i.hasNext();
while (hasNext) {
E o = i.next();
buf.append(o == this ? "(this Collection)" : String.valueOf(o));
hasNext = i.hasNext();
if (hasNext)
buf.append(", ");
} buf.append("]");
return buf.toString();
}