我有一个方法  public void test(Object obj)调用该方法时传任意参数都可以,这没问题但是如果我的参数是数组public void test(Object[] objs)这时如果再传任意类型的数组就不行了,只能传Object数组这是怎么回事呢有什么方法可以传任意类型的数组吗

解决方案 »

  1.   

    因为数组是Object的子类,但不是Object[]的子类。
      

  2.   

    原来如此这样的话参数还是定义为Object
    然后手动转换为 Object[]public void test(Object obj){
        Object[] objs = (Object[])obj;
    }
      

  3.   

    同样的原因,直接强制转换也是不可以的。因为参数obj并不是Object[]类型。
      

  4.   

    我想在你形参是Object时,任意参数包括非Object的基础类型如int,long,char等也可以是因为基础类型能被自动装箱提升为对应的Integer,Long等,它们是对象而Object[]为形参时,int[]等不会被提升为Integer[],所以就不行,但是除了这些基础类型,其它还是可以的,如Integer[],String[]等
      

  5.   

    这里觉得如果是知道大致会传入些什么类型的Object的话,可以用到instanceOf写一个判断方法处理这种情况
      

  6.   

    采用java的新特性,里面含有通用数据类型,你看一看把!!
      

  7.   

    Object是所有对象的父类,当然可以传任何对象,Object[]是一个数组,换成其他数组肯定不行
      

  8.   

    《java解惑》中对这个问题有详尽的解释
      

  9.   

    //此类用了java的新特性,通用数据类型,你可以在getObject()方法中传递任何数组类型!!
    public class TestObject<E> {

    public void getObject(E[] obj)  {
    for(int i=0;i<obj.length;i++) {
    System.out.println(obj[i]);
    }

    }
      
    public static void main(String args[]) {
    String[] str={"yangxun","yxz"};
    new TestObject().getObject(str);
    }
    }
      

  10.   

    同意这种看法。
    Object[] 这个数组只能接收对象。
    Integer  String  是对象