Frage

Wenn ich ein Singleton-Objekt Main ohne Begleiter Klasse zu erstellen, gibt es eine Möglichkeit, die Klasse dieses Singleton zu bekommen? classOf[Main] gibt einen Fehler. "nicht gefunden: Typ Main"

War es hilfreich?

Lösung

Da es eine Instanz einer Klasse ist, können Sie die Methode Main.getClass nutzen diese einmalige zu ziehen.

Hinter den Kulissen, die JVM weiß, dass Main ist eine Instanz einer Klasse mit dem Namen Main$, und dies kann über Java Reflexionsmethoden zugegriffen werden, wenn nötig.

Having said all das gibt es in der Regel sehr wenig Bedarf an Reflexion in Scala sowieso, so dass Sie nicht wirklich diese benötigen sollten, wenn Sie nur nach einem interessanten bisschen Theorie sind.

Andere Tipps

Singleton-Objekte, auch bekannt als Module, nicht über eine „Klasse“, wie Sie nicht von ihnen erben können. Denken Sie an Singleton und Klasse, die als entgegengesetzte Begriffe.

Sie haben tun, um eine Art aber:

object Main

def test(a: Main.type): Unit = println("Got: " + a)

test(Main)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top