一尘不染

Java 为什么不能在静态方法中使用'this'关键字

java

class Sub {
    static int y;
    public static void foo() {
         this.y = 10;
    }
}

我了解这this代表调用方法的对象,并且静态方法未绑定到任何对象。但是在上述情况下,变量y也是静态的。

如果我们可以在类对象上调用静态方法,为什么不能允许静态方法设置类的静态变量。

此附加约束的目的是什么?


阅读 632

收藏
2020-03-15

共1个答案

一尘不染

因为this是指对象实例。静态方法的调用中没有对象实例。但是当然你可以访问你的静态字段(仅静态字段!)。只需使用

class Sub {
    static int y;
    public static void foo() {
         y = 10;
    }
}

如果要确保获取的是静态字段,y而不是某些具有相同名称的局部变量,请使用类名称指定:

class Sub {
    static int y;
    public static void foo(int y) {
         Sub.y = y;
    }
}
2020-03-15