我在编写pojos时使用lombok的注释@Data,因为它会自动生成构造函数,hashCode以及其他方法。在我试图在这样的pojo类中使用@Data之前,它就像一个魅力。
@Data
public class MyPojo {
private final String name;
private final int from;
private final int to;
// other fields
}
我需要做的是在创建此pojo时限制from
和to
的值,以便to
始终大于from
,但似乎为了实现这个逻辑,我必须自己重写构造函数,使用大量类似于this.name = name
的代码。
PS:我认为从继承中使用super
可能是一种解决方法,但它可能会使程序更难被理解。
有没有更好的方法来满足这种需求?
答案 0 :(得分:1)
@Data注释没有提供任何验证构造参数的方法。我觉得你需要用@Getter @Setter @ToString @EqualsAndHashCode注释来注释你的pojo并自己编写构造函数。
答案 1 :(得分:0)
查看Lombok的网站,我没有看到任何方法将构造函数参数限制为特定值,尤其是相对于可能尚未初始化的另一个变量。您可能必须为此类创建一个具体的构造函数。
但它可能会使程序更难被理解
我真的不担心,因为你已经在使用Lombok,这会让任何大型程序在尝试追踪特定字段/方法时都会非常混乱。