我必须维护一些不再与公司合作的其他人编写的代码。我看到几个java.lang.reflect.Array.getLength(anArray)
的引用。它工作,但我从来没有看到反射用于获得数组长度。有谁知道之间的区别:
java.lang.reflect.Array.getLength(anArray)
和
anArray.length
它只是语法糖吗?
谢谢!
答案 0 :(得分:8)
如果anArray
静态类型到数组类型,则应使用anArray.length
(不是方法调用,顺便说一句)。如果您只将数组引用为Object
,则可以使用反射形式。
答案 1 :(得分:6)
这是获取数组长度的技巧,无论是基元数组还是对象数组。这允许编写一个对两种数组类型都有效的方法。
考虑一种打印任何类型数组内容的方法:
void print(Object array) {
for (int i = 0; i < Array.getLength(array); i++) {
System.out.println(Array.get(array, i));
}
}
这将适用于int []或Object []参数。
否则你应该只使用.length静态字段。