-2
擴展抽象外部類的靜態內部類我今天看到的這個模式,它混淆了我很多:在Java
abstract class A {
// does something
static class B extends A {
// does something as well
}
}
兩個奇怪的事情,我發現它:
- 靜態類可以被初始化使用
new A.B()
。 - 靜態類在應用程序中並不是唯一的(因此,不是真正的靜態),因爲每個初始化都會創建一個新對象。
對於爲什麼要使用這種模式,我仍然感到不安。在這種情況下,static class
是否意味着您可以靜態訪問它的構造函數,而不需要創建A
的實例,但實際上它不是以任何方式在應用程序中是唯一的?
編輯:
OK,所以我覺得我的靜態類的理解從C#來了。我現在清楚Java類的靜態。但什麼時候你會使用這樣的模式(其中內部靜態類擴展外部抽象的一個)和爲什麼?
https://docs.oracle.com/javase/tutorial/java/javaOO/n ested.html – 2017-10-05 18:38:08
「靜態類在應用程序中不是唯一的(因此,不是真正的靜態類),因爲每個初始化都會創建一個新對象。」 - 這不會爲類本身製作更多的副本,而這不是「靜態類」在Java中意味着什麼。也許你正在考慮C#。 – user2357112