首页 > 解决方案 > 我可以对不同但可比较的输入使用相同的方法吗?

问题描述

我正在编写以下方法,该方法将数组作为输入并将该数组的元素写入 .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)'

标签: javamethods

解决方案


因此,int在 java 中是 premitive 数据类型,不能将其表示为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);

推荐阅读