You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Immutables库为何不对集合属性执行必填校验?

问题原因解析

这是Immutables库的默认行为:

  • 对于单值类型(比如你代码里的String bar()),默认是必填属性,构建时必须显式设置,否则会抛出"required attributes are not set"的错误。
  • 对于集合类型(比如List<String> baz()),Immutables会自动为其生成空的不可变集合作为默认值,就算你没显式调用.baz()设置值,构建时也会自动填充空集合,因此不会触发必填校验。

如果想让集合属性也变成必填,可以通过@Value.Parameter注解标记,或者在@Value.Immutable中配置allParameters = true,强制所有抽象方法对应的属性都为必填项。比如修改定义:

@Value.Immutable(allParameters = true)
public abstract class Foo {
    public abstract String bar();

    public abstract List<String> baz();
}

这样不管是bar还是baz,构建时都必须显式设置,否则都会报错。

内容的提问来源于stack exchange,提问作者Isaac Kleinman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 23:31:04