java陷阱 神奇的初始化

2021-08-30 21:25:41 字數 699 閱讀 8192

[code]

public class daofactorycatch(throwable e)

}public static daofactory getinstance()

public static userdao getuserdao()

} 下面我們呼叫這段**:

daofactory.getinstance().getuserdao();

//注意:報錯了哈

原因。。。。

1。執行:

private static daofactory instance = new daofactory();

2。在靜態方法裡面,也就是一載入到jvm的時候就執行建構函式

所以private daofactory()catch(throwable e)

}被執行,並且我們能看到userdao 被賦值了,

3。private static userdao userdao = null;

在userdao被賦值之後,他又被賦值為空了。。。

如何改呢。。?

private static userdao userdao = null;

private static daofactory instance = new daofactory();

換順序。。也就是說把所有的準備工作都做好之後再去new 他

[/code]

java的靜態初始化和動態初始化

package array public class array for int i 0 i 3 i system.out.println for int i 2 i 0 i system.out.println system.out.print b.length n 動態初始化 inta new ...

java初始化順序

1 父類靜態成員和靜態初始化塊 按在 中出現的順序依次執行 2 子類靜態成員和靜態初始化塊 按在 中出現的順序依次執行 3 父類例項成員和例項初始化塊 按在 中出現的順序依次執行 4 父類構造方法 5 子類例項成員和例項初始化塊 按在 中出現的順序依次執行 6 子類構造方法 public abstr...

java初始化順序

例如以下 package chapter5 public class demo1one public void printinfo public static void main string args 程式一開始先執行 private static string password 0721 這行 ...