我正在学习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());
}
}
我已将内部类更新为此,它可以正常工作。
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());
}
}
答案 0 :(得分:5)
尽管名称如此,Outer
本身就是一个内部类,因此如果没有Main
的实例,就无法构造它。你需要:
Outer outer = new Main().new Outer("yang");
答案 1 :(得分:1)
Outer
和Inner
都是内部类。要访问它们,您必须实例化主类,然后您应该实例化内部类。
所以你的代码将是
Outer outer = new Main().new Outer("Yang");