2016-05-19 9 views
1

2つのクラスのために生成されていません。GroovyのAST @Canonical:コンストラクタは、祖先のフィールド

@Canonical 
class Parent { 
    int id 
} 

子供

@Canonical 
class Child extends Parent { 
    String name 
} 

、Javaから使用して、子供を持っているだけデフォルトとChild(String name)のコンストラクタ(とMap)がありますが、Child(int id)とChild(int id、String name)コンストラクタです。

ASTで行く機会はありますか?

答えて

3

Childクラスの@InheritConstructorsアノテーションを使用して、予想されるコンストラクタを呼び出す必要があります。

@Canonical @InheritConstructors 
class Child extends Parent { 
    String name 
} 
+0

Ack ...悲しいことに、コンストラクタが事実の後に生成されるので、悲しいことに、このアプローチは '@ Canonical'アノテーションを使用すると機能しません。私はこの回答を削除するか、関連する例として立つかどうか分かりません。 – cjstehno

関連する問題