Что такое Java-эквивалент объекта Scala?

В Scala мы можем написать

object Foo { def bar = {} }

Как это реализуется компилятором? Я могу вызвать Foo.bar (); из Java , но new Foo (); из Java выдает ошибку не удается найти символ символа: конструктор Foo ()

  • Поддерживает ли JVM синглтоны изначально?
  • Можно ли иметь класс в Java без конструктора?

Примечание: вот код, выводимый scalac -print

package <empty> {
  final class Foo extends java.lang.Object with ScalaObject {
    def bar(): Unit = ();
    def this(): object Foo = {
      Foo.super.this();
      ()
    }
  }
}
12
задан Jus12 19 October 2011 в 10:26
поделиться