java错误:构造函数已在类中定义-使用lombok
错误
java: constructor Restaurant() is already defined in class
com.example.order_system.domain.Restaurant
当我添加这个类并运行程序时出现
@Entity
@NoArgsConstructor
@RequiredArgsConstructor
@Getter
@Setter
@ToString
public class Restaurant {
@Id
@GeneratedValue
private long id;
@NotEmpty(message = "The restaurant must have a name")
private String name;
@NotEmpty(message = "Please add a description for this restaurant")
private String description;
@NotEmpty(message = "The restaurant must have a location")
private String location;
@OneToMany(mappedBy = "restaurant", fetch = FetchType.EAGER)
private List<ContactDetails> contactDetails = new ArrayList<>();
}
回答
正如文档中提到的@RequiredArgsConstructor 是使用final字段构建的:
@RequiredArgsConstructor 为每个需要特殊处理的字段生成一个带有 1 个参数的构造函数。所有未初始化的 final 字段都获得一个参数,以及任何标记为 @NonNull 且未在声明位置初始化的字段。对于那些标有@NonNull 的字段,还会生成一个显式的空检查。如果用于标记为 @NonNull 的字段的任何参数包含 null,则构造函数将抛出 NullPointerException。参数的顺序与字段在您的类中出现的顺序相匹配。
所以要么删除@RequiredArgsConstructor 注释,要么用final关键字(或@NonNull 注释)标记一些字段。