考慮一下:什麼時候靜態字段內聯初始化發生
Class A
{
private static B b = new B();
private static C c;
static
{
c= new C();
}
}
- 是發生在類負載的
b
初始化? - 初始化時出現同樣的問題
c
- 發生了什麼事情
b
或c
第一次初始化?
請給我一個關於是否存在這個問題,Java文檔的參考。
由於
考慮一下:什麼時候靜態字段內聯初始化發生
Class A
{
private static B b = new B();
private static C c;
static
{
c= new C();
}
}
b
初始化?c
b
或c
第一次初始化? 由於
與靜態修飾符的碼塊表示一個類初始化器;沒有靜態修飾符,代碼塊就是一個實例初始化器。
靜態初始化在它們被定義的順序執行(自上而下的,就像簡單變量初始化)被加載的類時(實際上,當它解決了,但是這是一個技術性問題)。
實例初始化在當類被實例化所定義的順序執行時,立即之前執行構造代碼,超級構造函數的調用之後立即。
沒有發現它,看到它對於這樣肯定這將是很好,如果我有一些參考吧 – JavaSa
不同的答案,我只是搜查谷歌「什麼時候靜態字段內聯初始化發生的Java」,而這正是你的標題+ java,並發現了一個***絕對寶藏的信息。 – aliteralmind
什麼是最明顯的實施/訂單,你爲什麼期望它不是? –