Чтобы добавить к ответу Киптона, нет ничего плохого в том, чтобы делать:
class GUI{
def GUI() {
println("something")
}
}
Но результат не будет конструктором - это будет обычный метод.
val a = new GUI()
ничего не печатает, но вызов a.GUI()
будет.
Вот почему вы не получили сообщение об ошибке при неправильном определении вашего конструктора.
Когда вы запускаете команду import GUI._
, Scala требуется GUI
, чтобы всегда вычислять один и тот же объект. Это только тот случай, когда GUI
является object
, package
или val
.
В вашем коде import GUI._
ссылается на метод GUI
, который вы определили, потому что метод GUI
определен в более близкой области, чем object GUI
(тот факт, что компилятор не встретил определение def GUI
пока не имеет значения).
Поскольку import GUI._
относится к методу GUI
, который не является val
, object
или package
, вы получили сообщение об ошибке о том, что GUI
не является стабильным идентификатором.