1.靜態(tài)嵌套類 (Static Nested Class) 和內(nèi)部類(Inner Class)的不同?
靜態(tài)嵌套類:Static Nested Class 是被聲明為靜態(tài)(static)的內(nèi)部類,它可以不依賴于外部類實(shí)例被實(shí)例
化。
內(nèi)部類:需要在外部類實(shí)例化后才能實(shí)例化,其語法看起來挺詭異的。
2.下面的代碼哪些地方會(huì)產(chǎn)生編譯錯(cuò)誤?
class Outer {
class Inner {}
public static void foo() { new Inner(); }
public void bar() { new Inner(); }
public static void main(String[] args) {new Inner();}
}
注意:Java 中非靜態(tài)內(nèi)部類對(duì)象的創(chuàng)建要依賴其外部類對(duì)象,上面的面試題中 foo 和 main 方法都是靜態(tài)方
法,靜態(tài)方法中沒有 this,也就是說沒有所謂的外部類對(duì)象,因此無法創(chuàng)建內(nèi)部類對(duì)象,如果要在靜態(tài)方法中創(chuàng)建內(nèi)部類對(duì)象,可以這樣做
new Outer().new Inner();