Java Generic Primitive 类型 n-d 数组

标签 java arrays generics

我必须将原始二维数组传递给过滤例程。无论数组的类型如何,过滤算法(中值过滤器)都是相同的。有没有办法以通用方式传递任何类型的数组,或者应该我用不同的数组类型重载了同一个函数。在第二种情况下,必须对不同的数据类型重复相同的代码。

int[][] medianfilter(int[][] arr){ ... }
float[][] medianfilter(float[][] arr){ ... }

有没有办法使上面的代码成为通用代码,而不是在每个重载函数中重复 medianfilter 的代码?

最佳答案

对于原始数组没有很好的方法来做到这一点,这就是为什么所有的库函数(例如 java.util.Arrays)也有这些重复的方法。

你可以定义一个方法

Object[] medianfilter(Object[] arr); // note the missing dimension

并使用反射找出运行时类型。这就是 System.arraycopy 正在做的事情。但是您随后需要进行类型转换。丑。

int[][]  result = (int[][]) medianFilter( input );

使用重复的方法。

关于Java Generic Primitive 类型 n-d 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3767168/

相关文章:

java - 对 Java 泛型的误解

java - 为什么Optional isPresent类方法采用Consumer<? super T> 作为参数,而不是 Consumer<T>?

java - 如何更改java集合选择的位置

python - 使用 for 循环创建对象列表 (python)

java - mysql 和 java 中的时区差异

sql - 获取 oracle.sql.array 的长度

java - 使用冒泡法对数组进行升序排序。其他数组则位于不同的索引处

kotlin - 所有类似数字值的通用函数?

Java 动态类在 webapp 中加载

java - 变量不应该为空时出现错误