Xtendを試しています。コンストラクタを作ることは可能ですか?とても簡単に思えますが、次のようなことをしようとするとエラーが発生します。
class Scope extends Rect {
public Scope(){
super()
}
}
コンストラクターは、new()メソッドをオーバーロードすることによって定義されます。
class MyClass extends AnotherClass {
new(String s) {
super(s)
}
new() {
this("default")
}
}
ここを見てください
Xtend の次のリリースは 12 月中旬に予定されています。コンストラクターの宣言をサポートします。
Xtend2.0にはコンストラクターのサポートはありません。ショーストッパーだと思います。
"class Foo {def Foo(){/ stuff /}}は、生成されたJavaコードを参照すると表示されるように、コンストラクターではなく、推論された戻り型を持つFooのインスタンスでメソッドFooを宣言します。
これは、デフォルトのコンストラクタがないJavaクラスを拡張する方法がないことを意味します。XTendは文句を言いません。コンパイルされないJavaを問題なく生成します。
また、XTendは、当然のことながら、不変の(最終的な)インスタンス変数をサポートしていません。
コンストラクターは、Xtend ではまだサポートされていません。提案 def Scope() は、動作するコンストラクターというよりもバグです。このチケットをフォローすることをお勧めします。