靜態內部類載入時機

2021-09-29 23:39:46 字數 533 閱讀 4074

這兩天在學習設計模式, 其中單例模式有種實現是通過靜態內部類方式實現, 有些不可思議, 故在此做個小實驗驗證一下靜態內部類的載入時機

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 外部類.內...