5

Xtendを試しています。コンストラクタを作ることは可能ですか?とても簡単に思えますが、次のようなことをしようとするとエラーが発生します。

class Scope extends Rect {

    public Scope(){
        super()
    }

}
4

4 に答える 4

13

コンストラクターは、new()メソッドをオーバーロードすることによって定義されます。

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

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

ここを見てください

于 2012-02-07T12:51:17.533 に答える
2

Xtend の次のリリースは 12 月中旬に予定されています。コンストラクターの宣言をサポートします。

http://www.eclipse.org/Xtext/xtend/#whatsnextを参照してください

于 2011-11-14T07:44:53.307 に答える
1

Xtend2.0にはコンストラクターのサポートはありません。ショーストッパーだと思います。

"class Foo {def Foo(){/ stuff /}}は、生成されたJavaコードを参照すると表示されるように、コンストラクターではなく、推論された戻り型を持つFooのインスタンスでメソッドFooを宣言します。

これは、デフォルトのコンストラクタがないJavaクラスを拡張する方法がないことを意味します。XTendは文句を言いません。コンパイルされないJavaを問題なく生成します。

また、XTendは、当然のことながら、不変の(最終的な)インスタンス変数をサポートしていません。

于 2011-11-08T20:42:54.510 に答える
1

コンストラクターは、Xtend ではまだサポートされていません。提案 def Scope() は、動作するコンストラクターというよりもバグです。このチケットをフォローすることをお勧めします。

于 2011-11-08T19:29:07.550 に答える