gpt4 book ai didi

java - Lombok 生成器不工作

转载 作者:行者123 更新时间:2023-11-30 10:15:01 27 4
gpt4 key购买 nike

我有一个基类

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class FurnitureBillingRequest implements JSONAble<FurnitureBillingRequest> {

private static final Gson gsonSerializer;

static {
gsonSerializer = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
}

@Expose
protected String name;

@Expose
protected long date;

@Expose
protected String phone;

@Expose
protected List<BillItemRO> items;

@Expose
protected int totalAmount;

@Expose
protected int amountPaid;

@Expose
protected String remark;

@Expose
protected String address;

public FurnitureBillingRequest(String name, long date, String phone, int totalAmount,
int amountPaid, String remark, String address) {
this(name, date, phone, new ArrayList<>(), totalAmount, amountPaid, remark, address);
}

public String toJson() {
return gsonSerializer.toJson(this);
}

public FurnitureBillingRequest toObject(String json) {
return gsonSerializer.fromJson(json, FurnitureBillingRequest.class);
}

@Override
public boolean equals(Object that) {

if (!(that instanceof FurnitureBillingRequest)) {
return false;
}

FurnitureBillingRequest thatFurnitureBillingRequest = (FurnitureBillingRequest) that;

if (!StringUtils.equals(this.name, thatFurnitureBillingRequest.name)) return false;

if (this.date != thatFurnitureBillingRequest.date) return false;

if (!StringUtils.equals(this.phone, thatFurnitureBillingRequest.phone)) return false;

if (!this.items.equals(thatFurnitureBillingRequest.items)) return false;

if (this.totalAmount != thatFurnitureBillingRequest.totalAmount) return false;

if (this.amountPaid != thatFurnitureBillingRequest.amountPaid) return false;

return true;
}
}

和如下扩展的子类

@Getter
@Setter
@NoArgsConstructor
public class UpdateBillRequest extends FurnitureBillingRequest {

private static final Gson gsonSerializer;

static {
gsonSerializer = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
}

@Expose
private String uid;

@Builder
public UpdateBillRequest(String uid, String name, long date, String phone, List<BillItemRO> items, int totalAmount, int amountPaid, String remark, String address) {
super(name, date, phone, items, totalAmount, amountPaid, remark, address);
this.uid = uid;
}

public UpdateBillRequest(String uid, String name, long date, String phone, int totalAmount, int amountPaid, String remark, String address) {
super(name, date, phone, totalAmount, amountPaid, remark, address);
this.uid = uid;
}

public String toJson() {
return gsonSerializer.toJson(this);
}

public FurnitureBillingRequest toObject(String json) {
return gsonSerializer.fromJson(json, FurnitureBillingRequest.class);
}
}

我写了一个单元测试来检查 json 是否创建好。

public class UpdateBillRequestTest {

@Test
public void toJson() {

UpdateBillRequest request = UpdateBillRequest.builder()
.date(1234567868L)
.uid("9i09909-90i90-8u90")
.name("kuldeep")
.phone("9535580366")
.build();

System.out.println(request.toJson());
}

@Test
public void toObject() {
}
}

但是当我尝试编译代码时,它最终会出错

[错误]/Users/kuldeep/Work/Repositories/billing/BillingModel/src/main/java/com/tarkshala/services/lambda/model/UpdateBillRequest.java:[24,5] builder() in com. tarkshala.services.lambda.model.UpdateBillRequest 无法覆盖 com.tarkshala.services.lambda.model.FurnitureBillingRequest 中的 builder()[错误] 返回类型 com.tarkshala.services.lambda.model.UpdateBillRequest.UpdateBillRequestBuilder 与 com.tarkshala.services.lambda.model.FurnitureBillingRequest.FurnitureBillingRequestBuilder 不兼容

我不知道出了什么问题?

最佳答案

这是 Java 中的限制。尝试编译这段代码:

class Foo {
public static FooBuilder builder() {
return new FooBuilder();
}
}
class Bar extends Foo {
public static BarBuilder builder() {
return new BarBuilder();
}
}
class FooBuilder {
public Foo build() {
return new Foo();
}
}
class BarBuilder {
public Bar build() {
return new Bar();
}
}

经典的构建器模式,但我省略了所有属性。

现在 eclipse 告诉我 Bar.builder() 的“返回类型与 Foo.builder() 不兼容”

您不能使用返回类型不兼容的重载方法。这甚至适用于静态方法。

关于java - Lombok 生成器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50667236/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com