конструкторы классов в Xtend - PullRequest
5 голосов
/ 07 ноября 2011

Я пробую Xtend . Можно ли сделать конструкторы? Это кажется таким простым, но я получаю сообщение об ошибке, когда пытаюсь что-то вроде этого:

class Scope extends Rect {

    public Scope(){
        super()
    }

}

Ответы [ 4 ]

12 голосов
/ 07 февраля 2012

Конструкторы определяются путем перегрузки метода new ():

class MyClass extends AnotherClass {
  new(String s) {
    super(s)
  }

  new() {
    this("default")
  }
}

смотрите здесь

2 голосов
/ 14 ноября 2011

Следующий релиз Xtend запланирован на середину декабря. Будет поддерживаться объявление конструкторов.

См. http://www.eclipse.org/Xtext/xtend/#whatsnext

1 голос
/ 09 ноября 2011

В Xtend 2.0 нет поддержки конструктора.Я думаю, что это ограничитель показа.

"класс Foo {def Foo () {/ stuff /}} объявляет метод Foo для экземпляров Foo с предполагаемым типом возвращаемого значения, а неконструктор, как показывает просмотр сгенерированного кода Java.

Это означает, что нет способа расширить классы Java, в которых отсутствуют конструкторы по умолчанию. XTend не жалуется, он успешно генерирует Java, который не компилируется.

XTend также не поддерживает неизменяемые (окончательные) переменные экземпляра, что вполне естественно.

1 голос
/ 08 ноября 2011

Конструкторы еще не поддерживаются в Xtend. Предложение def Scope () является скорее ошибкой, чем рабочим конструктором. Вы можете подписаться на этот билет .

...