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

cob*_*nks 3 java arrays reflection

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

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

它只是语法糖吗?

谢谢!

Jon*_*eet 9

如果anArray静态类型为数组类型,你应该使用anArray.length(不是一个方法调用,顺便说一句).如果你只有对数组的引用,你可以使用反射形式Object.


Emm*_*urg 7

这是获取数组长度的技巧,无论是基元数组还是对象数组.这允许编写一个对两种数组类型都有效的方法.

考虑一种打印任何类型数组内容的方法:

void print(Object array) {
    for (int i = 0; i < Array.getLength(array); i++) {
        System.out.println(Array.get(array, i));
    }
}
Run Code Online (Sandbox Code Playgroud)

这将适用于int []或Object []参数.

否则你应该只使用.length静态字段.