[英]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.