我遇到了一个错误,我真的很困惑。我有以下代码(非常简单,只是为了练习,这个想法是每个新对象都有 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
的静态变量。