Ala*_*eet 7 java arrays parameters
如何编写一个接受任何类型的数组(包括基元)作为参数的方法?
例如,我希望以下两个调用都能正常工作:
int[] intArray = {1, 2, 3};
String[] strArray = {"1", "2"};
hasSize(intArray, 3);
hasSize(strArray, 2);
Run Code Online (Sandbox Code Playgroud)
我到目前为止最接近的是:
public static <T> boolean hasSize(T[] array, int expectedSize)
{
return (array.length == expectedSize);
}
Run Code Online (Sandbox Code Playgroud)
...但这不适用于原语.
原始数组和不共享的对象数组是基类,除了Object.
因此,唯一的可能性是接受一个对象并在方法内检查它是否是一个数组
public static <T> boolean hasSize(Object x, int expectedSize)
{
return (x != null) && x.getClass().isArray() ?
java.lang.reflect.Array.getLength(x) == expectedSize :
false;
}
Run Code Online (Sandbox Code Playgroud)
当然这也接受非数组,可能不是你想要的解决方案.
因此,JDK主要为对象数组和原始数组提供相同的方法.
| 归档时间: |
|
| 查看次数: |
2788 次 |
| 最近记录: |