使lombok-builder实现两个具有公共字段的类的接口



假设我有一个接口和两个类似的类:

public interface FinancialTransactionBuilder {
FinancialTransactionBuilder cost(int cost);
FinancialTransactionBuilder dateOfPurchase(Date date);
FinancialTransactionBuilder customer(Customer customer);
}
@Builder 
public class ProductPurchaseInstance{
int cost;
Date dateOfPurchase;
Customer customer;
String productSerialNumber;
}
@Builder 
public class ServicePurchaseInstance {
int cost;
Date dateOfPurchase;
Customer customer;
Service serviceSold;
}

因此,这些类有3个公共字段costdateOfPurchasecustomer,而接口是这两个类的构建者都可以实现的。

我有没有办法在lombok@Builder@SuperBuilder注释中指定构建器正在实现一些接口方法?

在有人问";你为什么要这么做&";,这是因为我在一个代码库中使用两个非常相似的模型,并且将数据附加到这两个类的构建器的逻辑是非常复杂的重复代码。到目前为止,我编写了所有的锅炉板生成器代码,以便制作一个使用该接口附加数据的单一方法。但我想使用注释,这样在数据模型更改时就不必更新锅炉板了。

或者。。。我是否只需要创建一个抽象的父类,该类具有公共字段并使用@SuperBuilder注释?

有;自己做建设者。龙目将自动"填写":

@Builder
public class ServicePurchase {
int cost;
Date dateOfPurchase;
Customer customer;
Service serviceSold;
public static class ServicePurchaseBuilder implements FinancialTransactionBuilder {}
}

Lombok仍然会生成其他所有内容,因此构建器类的内容可以保持为空。

最新更新