Как определить конструктор без параметров в Scala - PullRequest
4 голосов
/ 20 июля 2010

Этот вопрос настолько глупый ... В любом случае, я просто не могу найти нужную информацию, потому что каждый пример класса Scala-конструктора, который я вижу, работает по крайней мере с одним параметром.

Я хочу перевести этот класс с Java на Scala:

public class SubscriptionConverter extends Converter {
  public SubscriptionConverter() {
    Context ctx = new InitialContext();
    UserEJB userEJB = (UserEJB) ctx.lookup("java:global/teachernews/UserEJB");
  }
  (...)
}

Так что у меня есть только конструктор без параметров. Я возился в Scala с этим (), но я не мог получить подобный пример, как приведенный выше, работающий. Как мне написать это в Scala?

Ответы [ 2 ]

11 голосов
/ 20 июля 2010

Любые операторы, объявленные на уровне класса, выполняются как часть конструктора по умолчанию.Так что вам просто нужно сделать что-то вроде этого:

class SubscriptionConverter extends Converter {
  val ctx = new InitialContext
  val userEJB = ctx.lookup("java:global/teachernews/UserEJB")
  (...)
}
4 голосов
/ 20 июля 2010

@ dbyrne охватывает самые важные части, но я добавлю несколько дополнительных деталей.

  1. Если у класса нет параметров и он неизменен, рассмотрите возможность объявления его как объекта.
  2. Конструктор, определенный операторами на уровне класса и списками параметров после имени класса, известен как первичный конструктор . * Вспомогательные конструкторы * определены как def this() = .... В отличие от Java, каждый вспомогательный конструктор должен делегировать первичному конструктору.
  3. Когда вы объявляете первичный конструктор с нулевыми списками параметров, компилятор автоматически добавляет один пустой список параметров. Если вы определяете конструктор с одним неявным списком параметров, компилятор добавит пустой список параметров перед этим.
...