java - 我可以对不同但可比较的输入使用相同的方法吗?
问题描述
我正在编写以下方法,该方法将数组作为输入并将该数组的元素写入 .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)'
解决方案
因此,int
在 java 中是 premitive 数据类型,不能将其表示为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);
推荐阅读
- neo4j - 在neo4j中找到连接到任何特定节点的最大权重边
- activemq-artemis - 如何使用 Apache Artemis 实现“手动”故障转移?
- node.js - 当 URL 末尾没有斜杠时如何将重定向状态代码从 308 切换到 301
- hyperledger-fabric - 使用 Raft 协议的 Hyperledger Fabric:交易如何打包成区块?
- r - 我可以找到 X1 组的质心,然后为 X2 组修复这些质心吗?
- java - 将 Java Spring Boot Jar 部署到 Maven 中心
- uml - 我必须在类图中为每个用例创建一个控制类吗?
- python - 在烧瓶中装饰的导入功能
- node.js - 当我初始化依赖项时,Typescript 别名无法正常工作
- javascript - SyntaxError: 不能在模块外使用 import 语句(Electron & typeORM)