"非静态方法不能从静态上下文引用"错误

时间:2014-11-08 15:52:14

标签: java methods static non-static

我想要做的是在这里添加来自另一个类(Noten)的对象并将其打印出来。 我知道这是一个常见问题,但我仍无法找到解决方案。

private ArrayList<Noten> notes123;
public void addNotes(Noten newNotes) {
    if (notes123.size() >= 0) {
        notes123.add(newNotes);
        System.out.println(newNotes);
    } else {
        System.out.println("No Notes.");
    }
}
public void schuelerInfo() {
    System.out.println("Name: " + name + " Student number: " + nummer);
    System.out.println("The notes are ");
    for (Noten note: notes123) {
        System.out.println(Noten.notenInfo());
    }
}

2 个答案:

答案 0 :(得分:3)

更改for循环
for (Noten note : notes123){
   System.out.println(Noten.notenInfo());
}

for (Noten note : notes123){
   note.notenInfo();
}

由于noteInfo方法被定义为非静态方法,您尝试使用Noten(类)静态访问它。您只能在已存在于arraylist中的引用的对象上访问它。

答案 1 :(得分:1)

由于notenInfo()不是静态方法,因此必须在Noten对象的实例上调用它。例如:

Noten n = new Noten();
n.notenInfo();