我在我的项目中使用 Lombok。
我的模型看起来像:
@Builder
@Data @AllArgsConstructor
public class ScreenDefinitionDTO {
@Singular
private List<ScreenDeclaration> screens;
}
我想做下一步操作:
String screenName = ctx.screenName().getText();
ScreenDeclaration declaration = ParsingUtils
.buildScreenDeclaration(StringUtils.trim(screenName));
创建实例的位置:
public static ScreenDefinitionDTO buildEmptyScreenDTO() {
return ScreenDefinitionDTO.builder()
.screens(new ArrayList<>())
.build();
}
最后,我得到:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
当我更改创建没有 Lombok 构建器模式的实例时,一切都很好:
public static ScreenDefinitionDTO buildEmptyScreenDTO() {
return new ScreenDefinitionDTO(new ArrayList<>());
}
我不明白 Lombok 的构建器模式有什么问题?
Due to GitHub问题 https://github.com/rzwitserloot/lombok/issues/916
Lombok @Builder
主要用于不可变(并使用
Collections.unmodifyingList 或 Guava 的 ImmutableList
这就是为什么你有UnsupportedOperationException
为了获得更大的确定性,请在有例外的地方重现完整的代码模式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)