我有这个简单的课程
public class ErrorDetails {
private String param = null;
private String moreInfo = null;
private String reason = null;
...
}
重构后,我添加了@Data
和@Builder
,但是所有实例化都不再起作用
ErrorDetails errorDetails = new ErrorDetails();
'ErrorDetails(java.lang.String,java.lang.String,java.lang.String)' 在不公开 'com.nordea.openbanking.payments.common.ndf.client.model.error.ErrorDetails'。 无法从外部软件包访问
如果我删除了@Builder
,它将正常工作,
为什么我不能同时使用@Data
和@Builder
?
答案 0 :(得分:4)
龙目岛的@Builder
must have @AllArgsConstructor
为了工作
还应添加@AllArgsConstructor
在后台,它使用constructor with all fields
建立所有字段将
@Builder
应用于类就像您将@AllArgsConstructor(access = AccessLevel.PACKAGE)
添加到该类并将@Builder
注释应用于此all-args-constructor一样。仅当您自己未编写任何显式构造函数时,此方法才有效。
答案 1 :(得分:2)
完整配置应为:
@Data
@Builder(toBuilder = true)
@AllArgsConstructor
@NoArgsConstructor
class ErrorDetails {
private String param; // no need to initiate with null
private String moreInfo;
private String reason;
}