Java 我应该在使用lombok时实例化一个字段吗
我使用lombok省略了javabean的getter和setter。 下面是一个来自《行动中的春天5版》一书的例子 java bean:Java 我应该在使用lombok时实例化一个字段吗,java,spring,spring-mvc,lombok,Java,Spring,Spring Mvc,Lombok,我使用lombok省略了javabean的getter和setter。 下面是一个来自《行动中的春天5版》一书的例子 java bean: @Data public class Taco { @Size(min=1, message="You must choose at least 1 ingredient") private List<String> ingredients; } private List<String> ingredients=ne
@Data
public class Taco {
@Size(min=1, message="You must choose at least 1 ingredient")
private List<String> ingredients;
}
private List<String> ingredients=new ArrayList<>();
渲染视图:
<form method="POST">
<input name="ingredients" type="checkbox" value="FLTO">
<span>Flour Tortilla</span><br>
<input name="ingredients" type="checkbox" value="GRBF">
<span>Ground Beef</span><br>
</form>
验证工作完成后,用户将收到消息:“您必须选择至少一种成分”
但我的问题是:即使我已经使用了lombok,我是否应该实例化一个字段,特别是对于一个引用字段?有没有一种方法可以使用注释来实现它?您可以定义空构造函数并初始化其中的
列表。Lomboks构造函数将被重写
@Data
public class Taco {
@Size(min=1, message="You must choose at least 1 ingredient")
private List<String> ingredients;
public Taco() {
ingredients = new ArrayList<>()
}
}
@数据
公营塔可{
@大小(最小值=1,消息=“您必须选择至少一种成分”)
私人成分清单;
公共塔可{
成分=新的ArrayList()
}
}
您可以定义空构造函数并初始化其中的列表。Lomboks构造函数将被重写
@Data
public class Taco {
@Size(min=1, message="You must choose at least 1 ingredient")
private List<String> ingredients;
public Taco() {
ingredients = new ArrayList<>()
}
}
@数据
公营塔可{
@大小(最小值=1,消息=“您必须选择至少一种成分”)
私人成分清单;
公共塔可{
成分=新的ArrayList()
}
}
但我仍然必须手动完成,为什么lombok不帮我自动完成?lombok只添加构造函数和getter/setter。这些都很直截了当。初始化成员超出了其范围。想想它将如何工作。如果您需要一个LinkedList
而不是ArrayList
,该怎么办?如果只需重写构造函数就可以实现,那么用注释实现这一点就太复杂了。但是为什么不按照问题中的建议使用字段初始值设定项呢?应该没有缺点,而且代码更少。静态初始值设定项只在类加载期间运行。将其用于可变类型可能容易出错。字段初始值设定项不是静态初始值设定项。但我仍然必须手动执行此操作,为什么lombok不帮助我自动执行此操作?lombok只添加构造函数和getter/setter。这些都很直截了当。初始化成员超出了其范围。想想它将如何工作。如果您需要一个LinkedList
而不是ArrayList
,该怎么办?如果只需重写构造函数就可以实现,那么用注释实现这一点就太复杂了。但是为什么不按照问题中的建议使用字段初始值设定项呢?应该没有缺点,而且代码更少。静态初始值设定项只在类加载期间运行。将其用于可变类型可能容易出错。字段初始值设定项不是静态初始值设定项。这是初始化字段,如果要指定默认值(如空的ArrayList
),则与Lombok注释一起执行此操作是完全正常的。如果将@Size
替换为@NotEmpty
,是否有效?@JanRieke在这种情况下有效,只有一个注释完全符合我的预期。但如果我希望用户选择至少两个项目,我必须同时使用@NotEmpty
和@Size(min=2)
这是在初始化字段,如果你想指定一个默认值(比如一个空的ArrayList
),那么与Lombok注释结合使用是完全正常的。如果你用@NotEmpty
替换@Size
,它能工作吗?@JanRieke在这种情况下工作,只有一个注释完全符合我的预期。但是如果我想让用户选择至少两个项目,我必须同时使用@NotEmpty
和@Size(min=2)