java java.lang.reflect.Array.getLength vs array.length

时间:2011-10-20 15:12:49

标签: java arrays reflection

我必须维护一些不再与公司合作的其他人编写的代码。我看到几个java.lang.reflect.Array.getLength(anArray)的引用。它工作,但我从来没有看到反射用于获得数组长度。有谁知道之间的区别:

java.lang.reflect.Array.getLength(anArray)anArray.length

它只是语法糖吗?

谢谢!

2 个答案:

答案 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静态字段。