java成员内部类依赖于外部类而存在,故创建内部类需要首先创建其关联的外部类。
public class Test {
public static void main(String args[]) {
Inner obj = new Inner(); // 报错,No enclosing instance of type Test is accessible.
}
class Inner {
String str;
void say() {
System.out.println("From Inner class");
}
}
}
改为
Test test = new Test();
Test.Inner obj = test.new Inner();
或将内部类改为静态内部类,静态内部类不依赖于外部类。
public class Test {
public static void main(String args[]) {
Inner obj = new Inner();
}
static class Inner { // 静态内部类不依赖于外部类
String str;
void say() {
System.out.println("From Inner class");
}
}
}
也可以在外部类中添加创建内部类的函数
public class Test {
public static void main(String args[]) {
Test.Inner obj = new Test().getInner();
}
class Inner {
String str;
void say() {
System.out.println("From Inner class");
}
}
Inner getInner() {
return new Inner();
}
}