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