static 與私有構造函數

  java中static是一個很有用的方法。

  首先我們來看一個例子:

 

首先我們來分析Test這個類,這個類中,有一個私有的構造函數,並且有一個static 的方法,在Rua這個類中,到底會有什麼樣的打印結果?

這個是得到的結果:

 

爲了更好的說明這一點,繼續看下面的兩個類:

打印出的內容爲:

 

這說明兩次所得到的實例是相同的。即單例模式。

 

所以,在這裏不難看出,在static方法內,只運行了一次,並且形成了三個單例,每個單例之間都相互不影響,在Test類中,分別構造了三個不同的實例,這三個實例間相互不會影響。

這裏還有一個問題,注意看註釋1,這裏沒有使用共有構造函數,而是使用了私有構造函數,那麼如果在這裏使用了共有構造函數會有什麼影響呢?首先,使用自由構造函數,這個類不可以初始化,即不可以被new出來,如果沒有顯示的聲明構造函數,那麼系統會爲默認的使用該類的共有構造函數,因此在這裏,既然需要使用到單例,那麼在這不可避免的就需要使用到私有構造函數,因爲,如果使用了共有構造函數,那麼可能造成的影響:該類可以被new出來,這樣的話,就不能被保證該實例會被這樣而使用。

 

這裏還有一點可能會發生疑問的就是,如果構造函數和static同時存在的時候,系統到底先執行哪一個呢?

系統首先會運行static內部的內容。

 

這裏能夠引出的問題:大多數人應該看過hibernate的源碼,在這裏貼一段過來

在這裏,我們便可以看出點hibernate對於數據庫連接的眉目了,

在接下來的文章中我會就hibernate對數據庫的連接,性能方面寫出一點我自己的看法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章