Gibt es die Klasse für Haupt in Scala
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"
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)