class Sub { static int y; public static void foo() { this.y = 10; } }
我了解这this代表调用方法的对象,并且静态方法未绑定到任何对象。但是在上述情况下,变量y也是静态的。
this
如果我们可以在类对象上调用静态方法,为什么不能允许静态方法设置类的静态变量。
此附加约束的目的是什么?
因为this是指对象实例。静态方法的调用中没有对象实例。但是当然你可以访问你的静态字段(仅静态字段!)。只需使用
class Sub { static int y; public static void foo() { y = 10; } }
如果要确保获取的是静态字段,y而不是某些具有相同名称的局部变量,请使用类名称指定:
y
class Sub { static int y; public static void foo(int y) { Sub.y = y; } }