我使用的龙目岛在我的项目和产生Setters和Getters使用@Setters,并@Getters注解POJO类的顶部。我正在尝试覆盖属性的 setter 方法,但它不起作用我想检查 JSON 属性是 Empty 还是 Null 我想在 Setter 方法中设置默认值@Setter@Getter@NoArgsConstructor@AllArgsConstructor@Accessors(chain = true)@ToStringpublic class DefaultModel {private String name;@Setter(AccessLevel.NONE)private String age; public void setAge(String age) { if(age==null||age.trim().isEmpty()||age.equals("null")) { this.age="10"; }else { this.age=age; }}}工作场景: {"name":"some","age":null } {"name":"some","age":"null" } {"name":"some","age":" " }失败场景: {"name":"some" }输出:DefaultModel(name=some, age=null)我也在这里将其作为参考,但到目前为止还没有运气
2 回答
![?](http://img1.sycdn.imooc.com/54584f8f00019fc002200220-100-100.jpg)
胡子哥哥
TA贡献1825条经验 获得超6个赞
要么你只是遇到了一个我从未见过的错误,要么你测试错了。
像这样的注释
@Setter(AccessLevel.NONE) private String age;
在字段级别上确实会阻止生成 setter。但是鉴于您正在定义一个 setter,您甚至不需要它。显式也@Setter
停止生成。
我刚刚使用 Eclipse 4.7.3a 和 Lombok 1.18.0 尝试了您的示例,并且您的(有问题的)setter 被调用。几年来我一直在使用 Lombok,从未遇到过这样的错误。
最有可能的问题是您的 JSON 反序列化器根本不使用 setter。我猜,你正在测试类似的东西
DefaultModel defaultModel = deserialize("{\"name\":\"some\"}", DefaultModel.class);
而不是直接测试setter。这就是问题所在。
![?](http://img1.sycdn.imooc.com/5458631e0001ffd402200220-100-100.jpg)
largeQ
TA贡献2039条经验 获得超7个赞
添加回答
举报
0/150
提交
取消