2016-09-07 65 views
-3
class SomeClass{ 
    static SomeClass(){ 
    } 
} 

在這裏,雖然我們可能能夠創建不同的名稱,但不應該指的是相同的內存位置?類似於用他的專名叫同一個人,一次是他的綽號?它仍然是單身課程嗎?我們可以聲明靜態構造函數來創建一個單例類嗎? java

+0

這是否編譯? –

+0

nope ....使構造函數私有 – Rishi

+1

靜態構造函數沒有意義。爲什麼這會使對象成爲單身? – OldCurmudgeon

回答

2

您不能有static構造函數,因爲它的任務是初始化一個this實例對象。

在Scala中,你可以寫

object SomeClass { 

} 

要創建一個獨立的,並一類的靜態字段之間的東西。

定義Java中的單件最簡單的方法是使用enum

enum SomeClass { 
    INSTANCE; 
} 

所有對SomeClass.INSTANCE將是相同的實例。

1

這是創建和發佈一個單獨的正確方法,假設你不想使用隱式單(像enum):

public SomeClass 
{ 
    private static class SingletonHolder 
    { 
     public static final SomeClass INSTANCE = new SomeClass(); 
    } 

    public static SomeClass getInstance() 
    { 
     return SingletonHolder.INSTANCE; 
    } 

    private SomeClass() 
    { 
    } 
} 
相關問題