import java.util.ArrayList;
import java.util.List;public class ToArrayTest
{


public static void main(String[] args)
{
List<String> str = new ArrayList<String>();

str.add("aaa");
str.add("bbb");
str.add("ccc");
str.add("ddd");

Object[] strT = str.toArray();

for(Object p:strT)
{
System.out.println(p);
}

}
}
我想请问下为什么转化后的Object类型不用向下转换就能直接打印出String类型。

解决方案 »

  1.   

    System.out.println(p);  
    打印对象,都是默认调用了object.toString()方法。即这里的p.toString()
      

  2.   

    因为有时候你想使用子类的方法,比如String的length,Object没有
      

  3.   

    Object[] strT = str.toArray();这里的strT数组的类型实际上是String类型的,因为编译的时候不能确定你的类型,只有在运行的时候才能确定你集合中数据集的类型,而Object是所有类的父类,可以接收任何的数据类型,所以这个方法的返回值就是Object数组,而在实际输出的时候是调用了String的toString方法,而不是Object中的toString方法,这里是方法的重写。