我必须维护一些已经不在公司的其他人编写的代码。我看到几处提到了java.lang.reflect.Array.getLength(anArray)
。它的工作,但我从来没有见过反射被用来获得数组长度。有没有人知道
java.lang.reflect.Array.getLength(anArray)
和anArray.length
这只是语法糖吗?
谢谢!
如果anArray
是静态类型的数组类型,您应该使用anArray.length
(顺便说一句,不是方法调用)。如果只有对数组的引用为Object
,则使用反射形式。
这是一个获取数组长度的技巧,无论是原语数组还是对象数组。这允许编写一个同时操作两种数组类型的方法。
考虑一个打印任意类型数组内容的方法:
void print(Object array) {
for (int i = 0; i < Array.getLength(array); i++) {
System.out.println(Array.get(array, i));
}
}
这将适用于int[]或Object[]形参。