int[]、float[] 或 double[] 数组的 Java 函数

标签 java arrays

我想编写一个 Java 函数,它将获取 int[]float[]double[] 作为输入。该算法完全相同(某种标量积)。如何编写一个能够处理所有类型的数值数组的函数?

最佳答案

在 Java 中没有简单的方法来处理这个问题。您可以:

  • 使用 Wrapper 类型(Integer[]Float[]Double[])并使用 Number[ ] 作为参数。有效,因为数组在 Java 中是协变的:

public static void main(String[] args) {
    f(new Integer[]{1,2,3});
    f(new Float[]{1,2,3});
    f(new Double[]{1,2,3});
}

private static void f(Number[] numbers) {
    f[0].doubleValue();
}

请注意,这种方法会显着增加内存消耗。


  • int[]float[] 数组转换为 double[] 并始终使用 double 。最好创建方法的重载版本,其中采用 int[]float[] 的方法仅进行转换并委托(delegate)给实际的 double[] 实现。

  • 我相信 Scala 可以无缝地处理这个问题,因为 Java 原始类型在 Scala 中是语义对象。

关于int[]、float[] 或 double[] 数组的 Java 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7625665/

相关文章:

java - 增加所有叶子元素值的两种解决方案

PHP MySQL 加入并输出为数组

javascript - 如果数组第一个元素中的字符串包含数组第二个元素中字符串的所有字母,则返回 true

c - 如何将 0xFF 存储到 C 中的字符?

java - 由于 Maven 的 SLF4J 模块加载错误,Hibernate 无法在 Wildfly 上序列化对象

java - DBCP 连接池

java - 在 Java 中,方法/构造函数声明可以出现在另一个方法/构造函数声明中吗?

javascript - 将数组拆分为无序列表?

c - 在 C 中修改 Fortran 数组

java - Spring MVC 相当于 .Net MVC LinkExtensions.ActionLink 方法