這兩天在學習設計模式, 其中單例模式有種實現是通過靜態內部類方式實現, 有些不可思議, 故在此做個小實驗驗證一下靜態內部類的載入時機
public
class
teststatic
public
teststatic()
// 內部類
class
innerclass
}// 靜態內部類
static
class
staticinnerclass
}public
static
void
main
(string[
] args)
}
一直以為只要是static修飾的靜態資源只要在類載入時就會執行, 所以靜態內部類在外部類載入時也會執行, 其實是錯誤的.
不管是靜態內部類還是非靜態內部類, 不會因為外部類的載入而載入; 靜態內部類的載入也會使外部類載入完成, 但外部類的構造方法不會執行
Java中靜態內部類的載入時機
先說結論 外部類初次載入,會初始化靜態變數 靜態 塊 靜態方法,但不會載入內部類和靜態內部類。例項化外部類,呼叫外部類的靜態方法 靜態變數,則外部類必須先進行載入,但只載入一次。直接呼叫靜態內部類時,外部類不會載入。再看 外部類及內部類 public class student public stu...
內部類 靜態內部類 延遲載入
外部類載入順序 1 外部類初次載入,會初始化靜態變數 靜態 塊 靜態方法,但不會載入內部類和靜態內部類。2 例項化外部類,呼叫外部類的靜態方法 靜態變數,則外部類必須先進行載入,但只載入一次。3 直接呼叫靜態內部類時,外部類不會載入。內部類載入順序 在初次呼叫的時候載入,且只載入一次 package...
內部類 靜態內部類
static可以修飾內部類,通常用來給外部類賦值 例如 建造者模式 靜態內部類不能使用外部類非靜態的屬性,必須用物件名呼叫 在外部類中 建立靜態內部類可以直接建立,不需要建立外部類 不能使用成員內部類的方式建立靜態內部類物件 內部類 物件名 new 內部類 外部類.內部類 物件名 new 外部類.內...