我现在有个疑惑,不明白怎么回事儿为什么有的能实例化成功,有的却不能???class Outer { class Inner { } public Inner getInner() {
return new Inner(); //为什么这里能直new出来??
}
public static void main(String[] args) {
Outer outer = new Outer();
Inner inner = outer.new Inner(); // 内部类实例化成功 Inner inner = outer.getInner(); //内部类实例化成功 Inner inner = new Inner(); //内部类实例化不成功!!!
Outer.Inner inner = new Outer.Inner(); //为什么提示 Outer.Inner() 这句话出错???
}
}
return new Inner(); //为什么这里能直new出来??
}
public static void main(String[] args) {
Outer outer = new Outer();
Inner inner = outer.new Inner(); // 内部类实例化成功 Inner inner = outer.getInner(); //内部类实例化成功 Inner inner = new Inner(); //内部类实例化不成功!!!
Outer.Inner inner = new Outer.Inner(); //为什么提示 Outer.Inner() 这句话出错???
}
}
如果Inner是static的才可以new Inner()
Inner属于Outer的内部类,所以Inner要实例话的前提是要产生Outer的对象,如果外部对象都没产生,怎么可能有产生里面的对象呢。
Outer.Inner inner = new Outer.Inner(); //为什么提示 Outer.Inner() 这句话出错???
这里出错也是因为没Outer对象,除非你的Inner声明成static,那样Inner就属于Outer类所有,而不是某个对象