是否可以将任何java类型或Object数组的数组传递给方法?

时间:2012-09-12 22:08:45

标签: java arrays arguments

我正在编写一个文件编写器,它使用提供的参数以特定格式生成字符串。我希望以最简单的方式将参数传递给方法给用户。参数可以是任何类型,因为它们将使用toString()方法转换为字符串。这是一个简单的例子:

public String writeLine( Object arg1, Object arg2 ) {
    return "(" + arg1.toString() + "," + arg2.toString() + ")";
}

但是,我需要能够传递可能无限量的参数(arg3,arg4等)。做这个的最好方式是什么?我想过这样做:

public String writeLine( Object[] argArray ) {
    String str = new String();
    for (int i = 0; i < argArray.length; i++) {
        str += argArray[i].toString();
    }
    return str;
}

public static void main(String[] args) {
    float[] values = {0.1, 0.2, 0.4, 0.8};
    writeLine( values ); //<------ Compile Error
}

但我很快意识到,如果我想传递特定类型的数组,这不起作用。 float数组首先需要转换为Object数组,这对用户来说是不必要的工作。简化这个的最佳方法是什么?

  1. 编写几种将常见数组类型作为参数的方法(writeLine(float [] argArray),writeLine(String [] argArray)等)(不适用于所有类型)
  2. 在传递之前将所有数组转换为Object数组(慢速和额外的工作)。
  3. 别的什么?

2 个答案:

答案 0 :(得分:4)

尝试:

public String writeLine( Object... args ) {
...
}

使用原始数组时,请确保使用适当的包装类型的数组替换它们,例如

Float[] values = {0.1f, 0.2f, 0.4f, 0.8f};

答案 1 :(得分:3)

您必须特殊情况下所有原始数组类型 - 例如float[]int[] - 但对于对象类型,您可以只使用一个方法Object[]