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

Hier, obwohl wir vielleicht verschiedene Namen erstellen können, aber sollte es sich nicht auf den gleichen Speicherort beziehen? Analog zur gleichen Person einmal mit seinem richtigen Namen, einmal seinen Spitznamen? Wäre es immer noch eine Singleton-Klasse?Können wir den Konstruktor für eine Singleton-Klasse statisch deklarieren? java

+0

diese kompilieren lassen? –

+0

nein .... machen Sie den Konstruktor privat – Rishi

+1

Ein statischer Konstruktor würde keinen Sinn ergeben. Und warum würde das das Objekt zu einem Singleton machen? – OldCurmudgeon

Antwort

2

Sie können keinen static Konstruktor haben, da es Aufgabe ist, ein this Instanzobjekt zu initialisieren.

In Scala können Sie

object SomeClass { 

} 

Um etwas zwischen einem Singletons und statische Felder einer Klasse zu erstellen schreiben.

Der einfachste Weg, um einen Singleton in Java zu definieren, ist ein enum

enum SomeClass { 
    INSTANCE; 
} 

Alle Verweise auf SomeClass.INSTANCE zu verwenden, wird die gleiche Instanz sein.

1

Dies ist der richtige Weg, um einen Singleton zu erstellen und zu veröffentlichen, können Sie eine implizite Singleton verwenden nicht vorausgesetzt werden sollen (wie ein enum):

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

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

    private SomeClass() 
    { 
    } 
} 
Verwandte Themen