1、靜態嵌套類 (Static Nested Class) 和內部類(Inner Class)的不同?
● 靜態嵌套類:Static Nested Class是被聲明為靜態(static)的內部類,它可以不依賴于外部類實例被實例化。
● 內部類:需要在外部類實例化后才能實例化,其語法看起來挺詭異的。
class Outer {
class Inner {
}
public static void foo() {
new Inner();
}
public void bar() {
new Inner();
}
public static void main(String[] args) {
new Inner();
}
}
注意:Java中非靜態內部類對象的創建要依賴其外部類對象,上面的面試題中foo和main方法都是靜態方法,靜態方法中沒有this,也就是說沒有所謂的外部類對象,因此無法創建內部類對象,如果要在靜態方法中創建內部類對象,可以這樣做:
new Outer().new Inner();
● Java中的反射
說說你對 Java 中反射的理解
Java中的反射首先是能夠獲取到Java中要反射類的字節碼,獲取字節碼有三種方法,
Class.forName(className)。
類名.class。
this.getClass()。然后將字節碼中的方法,變量,構造函數等映射成相應的Method、Filed、Constructor等類,這些類提供了豐富的方法可以被我們所使用。