【发布时间】:2012-07-24 18:11:10
【问题描述】:
class Sub {
static int y;
public static void foo() {
this.y = 10;
}
}
我了解this 表示调用该方法的对象,并且静态方法未绑定到任何对象。但在上述情况下,变量 y 也是静态的。
如果我们可以在类对象上调用静态方法,为什么我们不能允许静态方法设置类的静态变量。
这个附加约束的目的是什么?
【问题讨论】:
-
我意识到这是一个古老的问题,但我想 +1 作为一个非常有效的观点。尽管对于字段,答案很简单(将限定符排除在外),但对于静态内部类,它变得相关,并且当您想要的是对类本身的运行时实例的引用时,它也是相关的。例如,我可以键入“MyClass.class”来获取单例 Class
,但仅“class”本身是无效的,并且没有类似的解决方法。这导致类名可能会在不是很干燥的单元中重复。