2017-04-26 5 views
1

ロンボク:生成されたコンストラクタがありませんか?このコード

@Data 
@Entity 
@AllArgsConstructor 
public class Person { 

    private @GeneratedValue @Id Long id; 
    private final String firstname; 
    private String middlename; 
    private final String lastname; 
} 

ロンボク(V 1.16.14。)2つのコンストラクタを生成しなければなりません。第1に、@Dataに:

public Person(String firstname, String lastname) { ... } 

により@AllArgsConstructorにも存在すべきである:ただし

public Person(Long id, String firstname, String middlename, String lastname); 

、最初の(2つのパラメータ)コンストラクタ "消える" @AllArgsConstructorアノテーションを追加する場合。 @Data状態のJavadoc:

Equivalent to @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode. 

は、だから私は間違っ2つの引数ctorのがあるはず考えていますか? @RequiredArgsConstructor注釈が明示的に追加されている場合ので、これは非常に簡単な回避策があります。

@Data 
@Entity 
@AllArgsConstructor 
@RequiredArgsConstructor 
public class Person { 

    private @GeneratedValue @Id Long id; 
    private final String firstname; 
    private String middlename; 
    private final String lastname; 
} 

両方ctorsがご利用いただけます。しかし、この動作は私にはほとんど意味をなさないので、誰かがこれがバグか機能かどうかを説明することを望んでいました!

答えて

2

@Dataは、コンストラクタが存在しない場合にのみコンストラクタを生成します。

The documentationは言う:「@Dataは(明示的に記述されたコンストラクターが存在する場合にはコンストラクタが生成されないことを除いて)クラスに暗黙の@Getter、@Setter、@ToString、@EqualsAndHashCodeと@RequiredArgsConstructor注釈を持つようなものです。」 @AllArgsConstructorは、明示的に書かれたコンストラクタとしてカウントされます。

これは機能です。

開示:私はロンボク語の開発者です。

+0

説明をありがとう! – JoeG

関連する問題