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

发布于 2024-12-10 18:18:00 字数 259 浏览 0 评论 0原文

我必须维护一些由不再在公司工作的其他人编写的代码。我看到了一些对 java.lang.reflect.Array.getLength(anArray) 的引用。它有效,但我从未见过使用反射来获取数组长度。有谁知道以下之间的区别:

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

它只是语法糖吗?

谢谢!

I've got to maintain some code written by someone else who is no longer with the company. I'm seeing several references to java.lang.reflect.Array.getLength(anArray). Its working, but I've never seen reflection being used to get an array length. Does anyone know the difference between:

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

Is it just syntactic sugar?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

优雅的叶子 2024-12-17 18:18:00

如果 anArray静态类型为数组类型,则应使用 anArray.length (顺便说一句,不是方法调用)。如果您仅将数组作为 Object 进行引用,则可以使用反射形式。

If anArray is statically typed to an array type, you should use anArray.length (not a method call, btw). You'd use the reflection form if you only had a reference to the array as Object.

我也只是我 2024-12-17 18:18:00

这是获取数组长度的技巧,无论是基元数组还是对象数组。这允许编写一个对两种数组类型进行操作的方法。

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

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

这将与 int[] 或 Object[] 参数一起使用。

否则,您应该只使用 .length 静态字段。

This is a trick to get the length of an array, be it an array of primitives or an array of objects. This allows to write a method that operates on both array types.

Consider a method that prints the content of any type of array:

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

This will work with int[] or Object[] parameters.

Otherwise you should just use the .length static field.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文