如果我用类名引用非静态变量,当有一个对象时,为什么它是编译时错误?
我创建了一个对象,因此堆区域中有一组非静态变量。因此,如果我使用类名称引用非静态变量,则只有一个非静态变量,因此它可以使用它。
答案 0 :(得分:1)
事件如果有意义,编译器如何知道您只创建了一个实例? static variables
属于Class
个对象(顺便提一下,它们是类Class
的实例)。
答案 1 :(得分:1)
首先是因为它是这样的。
其次,因为在编译时,没有人知道是否会有0,1或100万个实例。除此之外,当你无法判断某些东西是指静态变量还是“单一实例变量”时,它会导致极其混乱的代码。
答案 2 :(得分:1)
让我们说你可以做到并且没有编译时错误,编译器怎么知道,当有多于1个实例时哪个变量引用?将你的理论付诸实践仅仅是为了一个实例,这将导致看似复杂的复杂代码。
如果您需要更多详细信息并需要程序员的观点,请阅读Java语言规范和JVM规范,以了解如何指定内存管理。