我如何编写一个方法来接受任何类型(包括基元)的任何数组作为参数?
例如,我希望以下两个调用都能正常工作:
int[] intArray = {1, 2, 3};
String[] strArray = {"1", "2"};
hasSize(intArray, 3);
hasSize(strArray, 2);
到目前为止我得到的最接近的是:
public static <T> boolean hasSize(T[] array, int expectedSize)
{
return (array.length == expectedSize);
}
...但这不适用于原语。
最佳答案
除了 Object
之外,原始数组和对象数组不共享是基类。
所以唯一的可能性是接受一个对象并在方法内部检查它是否是一个数组
public static <T> boolean hasSize(Object x, int expectedSize)
{
return (x != null) && x.getClass().isArray() ?
java.lang.reflect.Array.getLength(x) == expectedSize :
false;
}
当然这也接受非数组,可能不是你想要的解决方案。
出于这个原因,JDK 主要为对象数组和原始数组提供相同的方法。
关于java - 如何在 Java 中将任何数组作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33871121/