1、靜態(tài)嵌套類 (Static Nested Class) 和內(nèi)部類(Inner Class)的不同?
● 靜態(tài)嵌套類:Static Nested Class是被聲明為靜態(tài)(static)的內(nèi)部類,它可以不依賴于外部類實例被實例化。
● 內(nèi)部類:需要在外部類實例化后才能實例化,其語法看起來挺詭異的。
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)部類對象的創(chuàng)建要依賴其外部類對象,上面的面試題中foo和main方法都是靜態(tài)方法,靜態(tài)方法中沒有this,也就是說沒有所謂的外部類對象,因此無法創(chuàng)建內(nèi)部類對象,如果要在靜態(tài)方法中創(chuàng)建內(nèi)部類對象,可以這樣做:
new Outer().new Inner();
● Java中的反射
說說你對 Java 中反射的理解
Java中的反射首先是能夠獲取到Java中要反射類的字節(jié)碼,獲取字節(jié)碼有三種方法,
Class.forName(className)。
類名.class。
this.getClass()。然后將字節(jié)碼中的方法,變量,構(gòu)造函數(shù)等映射成相應(yīng)的Method、Filed、Constructor等類,這些類提供了豐富的方法可以被我們所使用。