在静态方法中使用this.var时出错,如果使用任何其他var名称,则错误消失



我遇到了一个错误,我真的很困惑。我有以下代码(非常简单,只是为了练习,这个想法是每个新对象都有 ID 登记,我也希望能够随时编辑类中的当前 ID(:

public class Main
{
    public static void main(String[] args) {
        Klient pierwszy = new Klient();
        System.out.println(pierwszy.id);
        Klient drugi = new Klient();
        System.out.println(drugi.id);
        System.out.println(Klient.id);
        Klient.setId(100);
        System.out.println(Klient.id);
    }
}
class Klient {
    static int id = 0;
    Klient() {
        id++;
        System.out.println(id);
    }
    static int setId(int id1) {
        id = id1;
        return id;
    }
}

问题出在以下形式的类 Client 中的方法中,它工作得很好。但是以前有:

    static int setId(int id) {
        this.id = id;
        return id;
    }

编译器抛出错误:无法从指向 this.id = id 的静态上下文引用非静态变量;如果我将参数名称更改为与 id 不同,因此我不必使用 this.id,则错误就消失了。我完全糊涂了。

我们使用this来指代当前对象,即类对象本身。在您的情况下,id不是类变量,而是静态变量。因此,您不能访问具有类对象引用this的静态变量。

相关内容

最新更新