(Object[])args[i] 如果我传的参数是 String[] array = { "1", "2 "};这是没有问题的,但是如果用int[] array{ 1, 2 }就不行,能不能告诉我如何解决这个问题
我怎么才能把一个Object对象转换成int[]呢?

解决方案 »

  1.   

    先把int[]转换成Integer[]吧,因为int是基本数据类型,不是一种类
      

  2.   

    这是最最传统的办法了,应该有捷径的,直接把int[]转成Integer.
    Integer[复杂数据类型]是int[基本数据类型]的封装
    public class TestObjectArray {    /**
         * 入口
         * @param args 参数列表
         */
        public static void main(String[] args) {
           int[] intArray = new int[10];
           Integer[] intPack = new Integer[intArray.length];
           for (int i = 0; i < intArray.length; i++) {
               intArray[i] = (int) Math.random();
               intPack[i] = intArray[i];
           }
           Object[] objArray = intPack;
           
           for (int i = 0; i < objArray.length; i++) {
               System.out.print(objArray[i] + ",");
               if (i % 2 == 0) {
                   System.out.println();
               }
           }
        }
    }
      

  3.   

    首先你要明白,在java中分为基本类型和引用类型。基本类型就是我们常见的int、long、float、double、char、boolean等,而引用类型说简单点就是一个类,比如常见的String,File等。而object就是一个类,所以你定义了object数组,传递的就数组参数就必须是object类及其子类。而在java中,object是个顶层基类,而int有对应的类类型,即Integer,它是object的子类。所以,你要向object数组传递int类型的值,必须先转化为int相应的类类型integer。
      

  4.   


    public static void Print( Object ...args ) {
    for( int i = 0; i < args.length; i++ ) {
    if( args[i].getClass().isArray() ) {
    xxmethod( (Object[])args[i] );
    }
    else {
    System.out.println( args[i] );
    }
    }
    }
    现在代码是这样的,只能传进去
    String[] array = { "1", "2 "};
    Jout.Print( "jfdk", "kfj kwe", array ); 
    而不能用int[] array = {1,2};
    Jout.Print( "jfdk", "kfj kwe", array ); 
    有没有办法解决这个问题?