簡體   English   中英

Lombok @builder 在擴展另一個類的類上

[英]Lombok @builder on a class that extends another class

我有兩個類Child extends Parent 我需要在類上添加 @Builder 注釋,這樣我就不需要自己創建構建器。

package jerry;// Internal compiler error: java.lang.NullPointerException

import lombok.AllArgsConstructor;
import lombok.Builder;

@AllArgsConstructor(onConstructor=@__(@Builder))
public class Child extends Parent { 
//Multiple markers at this line
//  - Implicit super constructor Parent() is undefined. Must explicitly invoke another constructor
//  - overrides java.lang.Object.toString

   private String a;
   private int b;
   private boolean c;

}


@Builder
public class Parent {
    private double d;
    private float e;
}

我需要能夠構建子實例,以便

Child child = Child.builder().a("aVal").b(1000).c(true).d(10.1).e(20.0F).build();

但到目前為止,我收到了代碼注釋中提到的錯誤。 任何人都可以指出我如何使用 lombok 或任何其他類似庫實現它的正確方向嗎?

子問題

為什么@AllArgsConstructor(onConstructor=@__(@Autowired))編譯但@AllArgsConstructor(onConstructor=@__(@Builder))@AllArgsConstructor(onConstructor=@__(@Builder))

我有兩個班, Child擴展了Parent 我需要在類上放置@Builder批注,這樣我就不需要自己創建構建器了。

package jerry;// Internal compiler error: java.lang.NullPointerException

import lombok.AllArgsConstructor;
import lombok.Builder;

@AllArgsConstructor(onConstructor=@__(@Builder))
public class Child extends Parent { 
//Multiple markers at this line
//  - Implicit super constructor Parent() is undefined. Must explicitly invoke another constructor
//  - overrides java.lang.Object.toString

   private String a;
   private int b;
   private boolean c;

}


@Builder
public class Parent {
    private double d;
    private float e;
}

我需要能夠建立子實例,以便

Child child = Child.builder().a("aVal").b(1000).c(true).d(10.1).e(20.0F).build();

但是到目前為止,我收到了代碼注釋中提到的錯誤。 任何人都可以將我指向正確的方向,如何使用lombok或任何其他類似的庫來實現它嗎?

子問題

為什么@AllArgsConstructor(onConstructor=@__(@Autowired))編譯,但是@AllArgsConstructor(onConstructor=@__(@Builder))不能@AllArgsConstructor(onConstructor=@__(@Builder))

我有兩個班, Child擴展了Parent 我需要在類上放置@Builder批注,這樣我就不需要自己創建構建器了。

package jerry;// Internal compiler error: java.lang.NullPointerException

import lombok.AllArgsConstructor;
import lombok.Builder;

@AllArgsConstructor(onConstructor=@__(@Builder))
public class Child extends Parent { 
//Multiple markers at this line
//  - Implicit super constructor Parent() is undefined. Must explicitly invoke another constructor
//  - overrides java.lang.Object.toString

   private String a;
   private int b;
   private boolean c;

}


@Builder
public class Parent {
    private double d;
    private float e;
}

我需要能夠建立子實例,以便

Child child = Child.builder().a("aVal").b(1000).c(true).d(10.1).e(20.0F).build();

但是到目前為止,我收到了代碼注釋中提到的錯誤。 任何人都可以將我指向正確的方向,如何使用lombok或任何其他類似的庫來實現它嗎?

子問題

為什么@AllArgsConstructor(onConstructor=@__(@Autowired))編譯,但是@AllArgsConstructor(onConstructor=@__(@Builder))不能@AllArgsConstructor(onConstructor=@__(@Builder))

我有兩個班, Child擴展了Parent 我需要在類上放置@Builder批注,這樣我就不需要自己創建構建器了。

package jerry;// Internal compiler error: java.lang.NullPointerException

import lombok.AllArgsConstructor;
import lombok.Builder;

@AllArgsConstructor(onConstructor=@__(@Builder))
public class Child extends Parent { 
//Multiple markers at this line
//  - Implicit super constructor Parent() is undefined. Must explicitly invoke another constructor
//  - overrides java.lang.Object.toString

   private String a;
   private int b;
   private boolean c;

}


@Builder
public class Parent {
    private double d;
    private float e;
}

我需要能夠建立子實例,以便

Child child = Child.builder().a("aVal").b(1000).c(true).d(10.1).e(20.0F).build();

但是到目前為止,我收到了代碼注釋中提到的錯誤。 任何人都可以將我指向正確的方向,如何使用lombok或任何其他類似的庫來實現它嗎?

子問題

為什么@AllArgsConstructor(onConstructor=@__(@Autowired))編譯,但是@AllArgsConstructor(onConstructor=@__(@Builder))不能@AllArgsConstructor(onConstructor=@__(@Builder))

我有兩個班, Child擴展了Parent 我需要在類上放置@Builder批注,這樣我就不需要自己創建構建器了。

package jerry;// Internal compiler error: java.lang.NullPointerException

import lombok.AllArgsConstructor;
import lombok.Builder;

@AllArgsConstructor(onConstructor=@__(@Builder))
public class Child extends Parent { 
//Multiple markers at this line
//  - Implicit super constructor Parent() is undefined. Must explicitly invoke another constructor
//  - overrides java.lang.Object.toString

   private String a;
   private int b;
   private boolean c;

}


@Builder
public class Parent {
    private double d;
    private float e;
}

我需要能夠建立子實例,以便

Child child = Child.builder().a("aVal").b(1000).c(true).d(10.1).e(20.0F).build();

但是到目前為止,我收到了代碼注釋中提到的錯誤。 任何人都可以將我指向正確的方向,如何使用lombok或任何其他類似的庫來實現它嗎?

子問題

為什么@AllArgsConstructor(onConstructor=@__(@Autowired))編譯,但是@AllArgsConstructor(onConstructor=@__(@Builder))不能@AllArgsConstructor(onConstructor=@__(@Builder))

如果你的子類想要在父類已經有一個 builder 方法時有一個 builder 方法,那么你可以為子類創建一個 all args 構造函數,然后在子類的構造函數上注釋 builder 並設置屬性

@Builder(builderMethodName = "custombuildername")

然后在創建子類 Object 時調用 customname 構建器。

package jerry;

import lombok.AllArgsConstructor;
import lombok.Builder;

@AllArgsConstructor(onConstructor=@__(@Builder))
public class Child extends Parent { 

   private String a;
   private int b;
   private boolean c;

   @Builder(builderMethodName = "childBuilder")
   public Child(String a, int b, boolean c, double d, float e){
       super(d,e);
   }

}


@Builder
public class Parent {
    private double d;
    private float e;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM