java.lang.reflect.Array.getLength与array.length的区别

6

我必须维护一些由已经离开公司的其他人编写的代码。我看到了几个引用java.lang.reflect.Array.getLength(anArray)。虽然它能工作,但我从未见过使用反射来获取数组长度。有人知道以下两者之间的区别吗?:

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

它只是语法糖吗?

谢谢!

2个回答

13
如果anArray的类型在编译时就已经确定为数组类型,你应该使用anArray.length(注意不是方法调用)。如果你只有一个Object类型的数组引用,那么你需要使用反射形式。

9
这是一个获取数组长度的技巧,无论是基本类型数组还是对象数组都可以使用。这使得我们可以编写一个适用于两种类型数组的方法。
考虑一个打印任何类型数组内容的方法:
void print(Object array) {
    for (int i = 0; i < Array.getLength(array); i++) {
        System.out.println(Array.get(array, i));
    }
}

这将适用于int[]或Object[]参数。
否则,您应该只使用.length静态字段。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接