Wie bekomme ich die Klasse eines Singleton-Objekts zur Kompilierzeit?

8

Betrachten Sie etwas wie folgt:

%Vor%

Was muss ich anstelle von ??? schreiben?

Ich habe versucht, classOf[Singleton] , classOf[Singleton.type] , Singleton.type , aber nichts hat funktioniert.

(Ich weiß natürlich über getClass , die Laufzeitversion von classOf , aber darum geht es mir nicht.)

    
soc 24.05.2011, 23:47
quelle

2 Antworten

6

Hier eine Lösung, aber es ist nicht schön ...

%Vor%

Bearbeiten: Die Lösung wurde nach dem Lesen einer weiteren Frage / Antwort abgeschlossen: Scala Äquivalent von Java java.lang.Class & lt; T & gt; Objekt

Anmerkung 1: Die Art der Löschung würde verhindern, dass dies besonders nützlich ist, z. im Mustervergleich. Siehe oben genannte Referenz / Antwort für eine gute Erklärung

Anmerkung2: Das scala -explaintypes -Flag ist sehr praktisch, um Typfehler zu verstehen.

HTH

    
laher 25.05.2011, 00:15
quelle
4

Sie sind nicht allein mit diesem Problem. Die Antwort ist: Es gibt derzeit keine Möglichkeit, ein Singleton.getClass zu vermeiden. Siehe Dieser Kommentar für weitere Informationen, warum classOf[Singleton] nicht funktioniert

    
sschaef 25.05.2011 13:27
quelle