3、非静态内部类的陷阱
3、1 非静态内部类的构造器
public class Outer {
public static void main(String[] args) throws Exception {
new Outer().test();
}
private void test() throws Exception {
System.out.println(new Inner()); //①
System.out.println(Inner.class.newInstance()); //②
}
public class Inner {
public String toString() {
return "Inner对象";
}
}
}输出结果为:Exception in thread "main" java.lang.InstantiationException: Outer$Inner
at java.lang.Class.newInstance(Unknown Source)
at Outer.test(Outer.java:10)
at Outer.main(Outer.java:5)
3、2 非静态内部类的子类
class Out {
class In {
public void test() {
System.out.println("In的test()方法");
}
}
class A extends In {}
}
public class OutTest extends Out.In {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}报错:No enclosing instance of type Out is available due to some intermediate constructor invocationpublic class OutTest extends Out.In {
public OutTest() {
new Out().super();
}
public static void main(String[] args) {
System.out.println("Hello World!");
}
}输出结果为:
1494



被折叠的 条评论
为什么被折叠?



