我可以对不同但可比较的输入使用相同的方法吗?

时间:2019-03-08 18:37:45

标签: java methods

我正在编写以下方法,该方法将数组作为输入并将此数组的元素写入.txt文件:

public static void writeArrayToTxt(Object[] array, String filename) throws FileNotFoundException, UnsupportedEncodingException
    {
        PrintWriter writer = new PrintWriter(filename, "UTF-8");
        for(int i = 0; i < array.length; i++)
        {
            String line = "";                       
            line = array[i] + "";                   
            writer.println(line);
        }
        writer.close();
    }

但是,我希望能够对整数数组和双精度数组使用相同的方法,因为这不需要不同的方法主体。这可能吗?如果是这样,我应该给该方法什么输入?

只需尝试

int[] arrayInt = {1, 2, 3, 4, 5};
writeArrayToTxt(arrayInt, "test.txt");

将给出“类型测试中的方法writeArrayToTxt(Object [],String)不适用于参数(int [],String)”

3 个答案:

答案 0 :(得分:3)

因此,int是Java中的专有数据类型,不能将其表示为Object。使用Integer

 Integer[] arrayInt = {1, 2, 3, 4, 5};

注意:如果只想传递IntegerDouble数组,我建议使用更具体的参数,例如Number []数组:

writeArrayToTxt(Number[] array, String filename)

如果将int []作为任何方法的返回值,则可以将其转换为Integer [] / Double [],如下所示。

int[] arrayInt = { 1, 2, 3, 4, 5 };
Integer[] arrayInteger = Arrays.stream(arrayInt).boxed().toArray(Integer[]::new);

答案 1 :(得分:1)

您可以使用通用方法

public static <T> void writeArrayToTxt(T[] array, String filename) 

并使用不同类型的数组

Integer[] intArr = new Integer[] {1, 2, 3};
Double[] doubleArr = new Double[] {4.5, 5.3, 3.2};
String[] stringArr = new String[] {"abc", "def", "ghi"};
writeArrayToTxt(intArr, "somefile1");
writeArrayToTxt(doubleArr, "somefile2");
writeArrayToTxt(stringArr, "somefile3");

答案 2 :(得分:0)

将签名更改为:

public static void writeArrayToTxt(Number[] array, String filename) throws FileNotFoundException, UnsupportedEncodingException

并这样称呼它:

Integer[] arrayInt = {1, 2, 3, 4, 5};
writeArrayToTxt(arrayInt, "test.txt");