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