2016-06-10 4 views
11

मैं अपनी परियोजना के लिए लोम्बोक का उपयोग करने की कोशिश कर रहा था। वापसी के रूप में,लोम्बोक में बिल्डरों के लिए विरासत

@Data 
public class B extends A { 
    Integer b1; 

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

मैं एक त्रुटि बी में बिल्डर() कह रही है एक में बिल्डर() ओवरराइड नहीं कर सकते हो रही है:

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

और एक वर्ग बी:

मैं एक वर्ग एक है बीबीयूल्डर में टाइप करें ABUilder में रिटर्न प्रकार के साथ संगत नहीं है।

क्या लोम्बोक का उपयोग करके ऐसा करने का कोई तरीका है? मैं बी के लिए पूर्ण निर्माता नहीं लिखना चाहता, जब तक कि मेरे पास कोई अन्य विकल्प न हो।

पीएस: मैंने Issue के कारण कक्षा बी के लिए स्पष्ट निर्माता दिया है। मैंने खोज करने की कोशिश की, लेकिन मुझे इसके लिए एक अच्छा समाधान नहीं मिला। कोई भी मदद सचमुच सराहनीय होगी।

उत्तर

13

यहां हमें बस निर्माता के सुपर को कॉल करने की आवश्यकता है।

@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(); 
      } 
    } 
} 
संबंधित मुद्दे