import java.util.*;public class BasicContainer {

public static void main(String[] args) {
Collection c = new ArrayList();
c.add("hello");
c.add(new Integer(100));

System.out.println(c);
}}
输出结果:[hello, 100]
我想问一下,打印时调用c.toString()方法,容器有重写到toString()方法吗?API里我找不到,,怎么输出会有中括号[]?

解决方案 »

  1.   

    Collection 是一个接口
    你是用
    ArrayList来实例化的,
    所以toString()方法是在ArrayList类内重写的,api不一定把这些也写出来。
    “[,]”ArrayList是在重载toString()时自己加的,就是让人看了更明白有几个元素而以,没有什么特殊意义。
      

  2.   

    ArrayList的toString方法就是调用每一个元素的toString方法,把它们放在[]中,以逗号隔开。
    这些其实在API里可以找到的了。
      

  3.   

    刚才我查了一下jdk源代码,看到ArrayList继承了AbstractList,AbstractList继承了AbstractCollection,AbstractCollection有重写了toString.有输出[]
      

  4.   

    System.out.println(c.toString().substring(1, c.toString().length()-1));
      

  5.   

    List类型的对象都是这么toString出来的,
    不是直接数组对象的toString方法,而是把List对象的元素循环组合成的字符串,
    这个不用看源码都能想到,
    我觉得只要知道是哪个对象的toString就行了,为什么是这样的格式没必要在意,如果你真想用这个方法做什么判断,那就重载一下。
      

  6.   

    这有什么大惊小怪!!
    所有Collection本来就有它自己的toString()!!