0

我正在编写一个文件编写器,它使用提供的参数以某种格式生成字符串。我希望以用户可能的最简单方式将参数传递给方法。参数可以是任何类型,因为它们将使用 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
}

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

  1. 编写几个以常见数组类型作为参数的方法( writeLine( float[] argArray )、writeLine( String[] argArray ) 等)(不适用于所有类型)
  2. 在传递之前将所有数组转换为对象数组(缓慢和额外的工作)。
  3. 还有什么?
4

2 回答 2

4

尝试:

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

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

Float[] values = {0.1f, 0.2f, 0.4f, 0.8f};
于 2012-09-12T22:13:15.190 回答
3

您必须对所有原始数组类型进行特殊处理——例如float[]int[]——但对于对象类型,您可以只使用一个方法,该方法采用Object[].

于 2012-09-12T22:23:40.787 回答