
Lombok fluent 如下,若
@Setter @Getter @Accessors(fluent = true) String str; 则
public String str(){ return this.str; } public SomeClass str(String str){ this.str = str; } 用起来很方便,但之前因为 Jackson 不支持的原因,只是小范围内部类中使用,然而今天一个内部类也需要 JSON 序列化,还是碰到一起了。
搜了一个小时,无解。 @Builder 只能解决 setter 方向,而且二者并不相容。见下面
// @Builder 的用法 SomeClass.builer().str("xxx").a("xxx").b("xxx").build(); // fluent 的用法 new SomeClass().str("xxx").a("xxx").b("xxx"); // 另外,Builder 是专门用于不可变类的,fluent 不要求不可变 我现在对 Lombok fluent=true 的用法产生怀疑了,貌似除了 Lombok 试验了它,没有其它框架、工具,或人来提到它。
1 Belmode Mar 12, 2019 via Android 基本不用 lombok,宁愿舍弃这种便利性。 |
2 GM Mar 12, 2019 说了半天,就是没说问题到底是什么?到底是哪里无解?什么地方冲突了? |
3 wfd0807 Mar 12, 2019 基本不用 lombok +10086 |
4 wanghaa Mar 12, 2019 这种生成的不是标准的 java bean 结构,一般都是不推荐用,这个是省略掉 get set 前缀,如果想链式访问构造对象推荐用这个注解的另一个属性 chain=true // chain 的用法 new SomeClass().setStr("xxx").setA("xxx").setB("xxx"); |
5 feiyuanqiu Mar 12, 2019 给每个字段加 @JsonProperty 注解吧 |
6 foutin Mar 12, 2019 |
7 passerbytiny OP @wanghaa #4 这种情况只能临时解决,java bean 这种必须有 Getter、Setter 的规范,已经越来越撑不住了 @feiyuanqiu #5 这个不管用,它只能解决名称不同,不能解决没有 Getter、Setter @foutin #6 不是这个 |
8 wc951 Mar 12, 2019 via Android 这种实验性注解不敢瞎用 |
9 micean Mar 12, 2019 换 gson^_^ |
10 micean Mar 12, 2019 |
11 gz911122 Mar 12, 2019 gson 应该是可以的 |
12 feiyuanqiu Mar 12, 2019 @passerbytiny #7 |
14 notreami Mar 12, 2019 不用 lombok,是什么鬼?难道还在 jdk1.5 ?? |
15 samples Mar 12, 2019 @feiyuanqiu 这个圣光主题...... |
16 passerbytiny OP @feiyuanqiu #12 多谢测试,看来 Jackson 在设置读取值的时候回做兼容性处理,只不过在决定有哪些字段的时候只认 Getter、Setter,或 Builder。 |
17 liaojl Mar 12, 2019 via Android 标题已经说了“不要涉及该不该用 Lombok ”,评论区里还一堆人说不要用 lombok |
18 yujunhao8831 Mar 12, 2019 |
19 lidfather Mar 12, 2019 via Android 确实没什么好用的,还得安装插件 |
21 CamD Jul 2, 2020 idea 自动生成 setter,getter 不也就解决了,而且肯定兼容需要调用 setter,getter 的地方 |