编程语言
首页 > 编程语言> > Java通用原始类型n维数组

Java通用原始类型n维数组

作者:互联网

我必须将原始2d数组传递给过滤例程.不管数组的类型如何,过滤(中值过滤器)的算法都是相同的.是否有办法以通用的方式传递任何类型的数组,还是我应该重载相同的函数具有不同的数组类型.在第二种情况下,对于不同的数据类型,必须重复相同的代码.

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

有没有一种方法可以使上面的代码通用,而不是在每个重载的函数中都重复中值滤波器的代码?

解决方法:

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

您可以定义一个方法

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

并使用反射来找出运行时类型.这就是System.arraycopy所做的.但是然后您需要进行类型转换.丑陋.

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

使用重复的方法.

标签:generics,arrays,java
来源: https://codeday.me/bug/20191209/2096534.html