现有一个方法:   
public static void methodA(Object[] params){
  ...
}
如果我这样用:
long[] pl = ...
int[] pi = ...那么 methodA(pl) 或 methodA(pi) 会语法报错的----------所以:我怎样写 methodA 的参数才可以 让 methodA 接受 long[] 或 int[] 或 String[] 及其他类型的数组

解决方案 »

  1.   

    public static void methodA(Object params){
      ...
      

  2.   

    当然不行了,int,long是基本数据类型,Object是所有类型的父类。你在建立int,long数组要用类来建立,Long[] pi =null; Integer[] pl=null;
      

  3.   

    public static void methodA(Object params) {
    methodA(pi);
    }

    static int[] pi = ...
      

  4.   

    第一种方式:利用重载技术
    public static void methodA(Object[] params) {
    }
    public static void mathodA(long[] params) {
    }
    public static void methodA(double[] params) {
    }
    将所有的基本类型各写一个重载方式,这个方法比较麻烦。第二种方式:利用commons-lang库
    int[] pi = ...
    Integer[] objPi = ArrayUtils.toObject(pi);
    methodA(objPi);
      

  5.   


    方法要求参数是对象数组。但long[] 和int[]是基本类型数组。可以将基本类型打包,即:
    int[] -> Integer[]
    long[] -> Long[]
    再作为参数传入。
      

  6.   

    我晕啦
    你的参数是object[] 对象数组
    long[] pl = ... 
    int[] pi = ... 
    是基本数据类型的数组?
    明显不匹配。
    Integer【】
    String[]
    即可
      

  7.   

    我晕就是不想写重载方法, 也不想用 methodA(Object params) 才来问的
      

  8.   

    对象和基本数据类型是不一样的。
    你看看JDK自己的做法就知道了,你这种情况,JDK是这样做的:
    定义  
    method(Object[] param)
    method(int[] param)
    method(long[] param)
    method(double[] param)
    ....
    你去看看 java.util.Arrays这个类的源代码
      

  9.   

    讲解一下为什么 Object[] 与 int[]不一样
    在java里面,数据只有2种存在模式:对象(Object)和基础数据类型(Primitive data type)
    而基础数据类型的数组也是对象,也就是说 int[]是一个对象
    而Object[]是对象的数组
    很显然 一个对象≠对象数组