class SomeClass{
static SomeClass(){
}
}
在這裏,雖然我們可能能夠創建不同的名稱,但不應該指的是相同的內存位置?類似於用他的專名叫同一個人,一次是他的綽號?它仍然是單身課程嗎?我們可以聲明靜態構造函數來創建一個單例類嗎? java
class SomeClass{
static SomeClass(){
}
}
在這裏,雖然我們可能能夠創建不同的名稱,但不應該指的是相同的內存位置?類似於用他的專名叫同一個人,一次是他的綽號?它仍然是單身課程嗎?我們可以聲明靜態構造函數來創建一個單例類嗎? java
您不能有static
構造函數,因爲它的任務是初始化一個this
實例對象。
在Scala中,你可以寫
object SomeClass {
}
要創建一個獨立的,並一類的靜態字段之間的東西。
定義Java中的單件最簡單的方法是使用enum
enum SomeClass {
INSTANCE;
}
所有對SomeClass.INSTANCE
將是相同的實例。
這是創建和發佈一個單獨的正確方法,假設你不想使用隱式單(像enum
):
public SomeClass
{
private static class SingletonHolder
{
public static final SomeClass INSTANCE = new SomeClass();
}
public static SomeClass getInstance()
{
return SingletonHolder.INSTANCE;
}
private SomeClass()
{
}
}
這是否編譯? –
nope ....使構造函數私有 – Rishi
靜態構造函數沒有意義。爲什麼這會使對象成爲單身? – OldCurmudgeon