我正在学习Java中的内部类,但我编写这段代码,当我编译它时,我得到了这个错误:
Error:(84, 23) java: non-static variable this cannot be referenced from a static context
.
public class Main {
class Outer {
private String string;
Outer(String s) {
this.string = s;
}
public Inner inner() {
return new Inner();
}
class Inner {
@Override
public String toString() {
return string;
}
}
}
public static void main(String[] args) {
Outer outer = new Outer("yang");
// System.out.println(outer.inner().toString());
}
}
Run Code Online (Sandbox Code Playgroud)
我已将内部类更新为此,它可以工作.
public class Main {
static class Outer {
private String string;
Outer(String s) {
this.string = s;
}
public Inner inner() {
return new Inner();
}
class Inner {
@Override
public String toString() {
return string;
}
}
}
public Outer outer(String s){
return new Outer(s);
}
public static void main(String[] args) {
// Main main = new Main();
Outer outer = new Outer("YANG");
System.out.println(outer.inner().toString());
}
}
Run Code Online (Sandbox Code Playgroud)
尽管它的名字,Outer
它本身就是一个内部类,因此不能在没有实例的情况下构造Main
.你需要:
Outer outer = new Main().new Outer("yang");
Run Code Online (Sandbox Code Playgroud)