2016-06-10 25 views
11

Stavo cercando di usare lombok per il mio progetto.Ereditarietà per i costruttori di lombok

Ho una classe A:

@Data 
@Builder 
public class A { 
    Integer a1; 
} 

e una classe B:

@Data 
public class B extends A { 
    Integer b1; 

    @Builder 
    public B(Integer b1, Integer a1) { 
     super(a1); 
     this.b1 = b1; 
    } 
} 

sto ottenendo un errore che dice builder() in B non può ignorare builder() in A, come il ritorno digitare BBuilder non è compatibile con il tipo restituito in ABuilder.

C'è un modo per farlo usando lombok? Non voglio scrivere il builder completo per B, a meno che non abbia altre opzioni.

PS: Ho fornito un costruttore esplicito per la classe B a causa di Issue. Ho provato a cercare, ma non sono riuscito a trovare una buona soluzione per lo stesso. Qualsiasi aiuto è molto apprezzato.

risposta

13

Qui abbiamo solo bisogno di chiamare super del costruttore.

@Data 
public class B extends A { 
    Integer b1; 

    @Builder 
    public B(Integer b1, Integer a1) { 
     super(a1); 
     this.b1 = b1; 
    } 

    public static class BBuilder extends ABuilder{ 
      BBuilder() { 
       super(); 
      } 
    } 
}