在java中这样写没有问题Object o=new Object[10]   注意前面的Object没有中括号。
但0[0]="hello"就报错了了,另外
String str=new String[10]这是通不过。请明白的解释一下!

解决方案 »

  1.   

    new出来的Object对象数组,但是同样属于对象
    因为Object是任何对象的父类
    你拿对象直接取小标当然是不行的,要数组才行.但是你声明的是对象,而不是对象数组
    下面的String str=new String[10] 因为字符串数组已经不再是字符串
    这个与Object不同 ,Object数组仍然是Object,但是String则不是
      

  2.   

    二楼说的对,数组在java中也对象,也属Object类的子类
      

  3.   

    在java中数组也是对象,所以可以声明一个对象指向Object数组。但是O是一个对象,不是对象数组,所以引用就报错了。至于String类型当然不能指向String数组了
      

  4.   

    2L说的有道理,但是不知道是不是权威答案
    如果这样声明可以的话,那这样做的好处是什么,还有就是这样是不是使得Java的语法不太规范
      

  5.   

    正如2L所说的
    Object o=new String[10]
    是一个道理
      

  6.   

    明显是1L说的~,怎么变成2L了。
    Object o=new Object[10];
    o[0]=new String("hello");
    这样是不会报错的。 因为 o[0]的类型是object,所以你直接那么赋值因为是会报错的。
      

  7.   

    那我怎么输出里面的东西呢?比如我用一集合toArray()方法对进进行了赋值,通过foreach去输出o行不通,直接输入o也不行。该怎么输出。
      

  8.   

    这个你应该先把o强转 为 
    Object o=new Object[10];
    Object[] oo = (Object[]) o;
    然后foreach oo就好了。
      

  9.   


    public class Test11 {
    public static void main(String args[]){
    Object o=new Object[10];
    ((Object[])o)[0]="hello";
    for(Object ooo:(Object[])o){
    System.out.println(ooo);
    }
    }
    }
    7楼说法有误,这个是正确的。