评估一个静态私有变量(Java),不应该是非法的吗?

Assessing a static private variable (Java), Shouldn't it be illegal?

在将此问题标记为重复之前,请确保提供您自己的解释。谢谢你。请注意私有静态变量,它们不是实例变量。

我有以下场景:

public class Statics {
   private static class Counter {
        private int data = 5; //Declared as private.

//        public Counter() throws IllegalAccessException {
//            throw new IllegalAccessException();
//        }

        public void bump(int inc) {
            inc++;
            data = data + inc;
        }
    }

    public static void main(String[] args) throws IllegalAccessException {
        Counter c = new Counter();
        int rnd = 2;
        c.bump(rnd);

        c.data = 0; //How this possible? It is declared as private.

        System.out.println(c.data + " & "+ rnd);
    }
}

输出:0 & 2

我的问题是,我怎么可能从 class 外部访问数据(私有静态)变量。

在Java中,我们知道private访问修饰符的成员不能从class外部访问。

我们总是使用 setters & Getters 来修改私有变量的值,不是吗?我错过了什么吗?

因为 class Counter 是 class Statics 的私有成员,class 的私有成员可以从其 class 中访问.

My question is, how is it even possible that I am able to access the data (private static) variable from outside the class.

针对您的问题:

"您已经能够从 class 本身内部访问数据(私有静态)变量"(不在 'Statics' class 之外)"