Получение класса для Main в Scala - PullRequest
2 голосов
/ 06 января 2011

Если я создаю одноэлементный объект Main без сопутствующего класса, есть ли способ получить класс этого одноэлементного объекта?classOf[Main] выдает ошибку: «не найдено: введите Main».

Ответы [ 2 ]

3 голосов
/ 06 января 2011

Поскольку это экземпляр класса, вы можете использовать метод Main.getClass, чтобы извлечь его.

За кулисами JVM знает, что Main является экземпляром класса с именем Main$, и к нему можно обратиться через методы отражения Java, если необходимо.

Сказав все это, в любом случае в Scala, как правило, очень мало необходимости размышлять, так что вам это не нужно, если вы только не интересуетесь какой-то теоретической теорией.

0 голосов
/ 06 января 2011

Синглтон-объекты, или модули, не имеют «класса», так как вы не можете наследовать от них. Думайте о синглтоне и классе как об противоположных понятиях.

Хотя у них есть тип:

object Main

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

test(Main)
...