以下是一个例子:
import java.util.Collection;
/**
* Created by IDEA on 16/11/14.
*/
public class Size
{
public static int size(Iterable<?> data)
{
if (data instanceof Collection) {
return ((Collection<?>) data).size();
}
int counter = 0;
for (Object i : data) {
counter++;
}
return counter;
}
public static int size(int[] data)
{
return data.length;
}
public static int size(double[] data)
{
return data.length;
}
public static int size(float[] data)
{
return data.length;
}
public static int size(short[] data)
{
return data.length;
}
public static int size(boolean[] data)
{
return data.length;
}
public static int size(char[] data)
{
return data.length;
}
public static <T> int size(T[] data)
{
return data.length;
}
}
size
方法对于所有基本数组都是相同的。有没有办法避免这种冗余?
答案 0 :(得分:3)
不,没有。这是使用原语的代价。
你可以在java.util.Arrays
类的许多方法中看到这种不可避免的冗余的例子,其中每种原始数组都有不同的方法(例如:copyOf,sort,swap等)。