我正在编写以下方法,该方法将数组作为输入并将此数组的元素写入.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)”
答案 0 :(得分:3)
因此,int
是Java中的专有数据类型,不能将其表示为Object
。使用Integer
:
Integer[] arrayInt = {1, 2, 3, 4, 5};
注意:如果只想传递Integer
和Double
数组,我建议使用更具体的参数,例如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");