为什么java在jvm public中保留了length字段

Jav*_*per 2 java oop jvm

这是一个例子:

int[] a = {10};
int x = a.length;
Run Code Online (Sandbox Code Playgroud)

我们不断阅读以隐藏变量并使用访问器.为什么这条规则违反了?

Pet*_*rey 8

一个更大的问题是; 为什么没有类文件int[]?没有这样的类文件就没有放置这种方法的地方,所以它纯粹是一种语言特性.它看起来像是一块int[]但不是.它们本可以使它看起来像一个方法调用,但它们不是因为它是一个不可变的字段.

如果你运行这个

public static void main(String[] args) throws NoSuchFieldException {
    Field length = args.getClass().getDeclaredField("length");
Run Code Online (Sandbox Code Playgroud)

它会抛出一个,NoSuchFieldException因为它不是像a中那样的场,class而是它看起来像一个.

我们不断阅读以隐藏变量并使用访问器.

它并不总是必要的,在这种情况下,没有好处,只能提高一致性.