Lombok fluent 如下,若
@Setter @Getter @Acessors(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 2019-03-12 15:14:03 +08:00 via Android 基本不用 lombok,宁愿舍弃这种便利性。 |
2 GM 2019-03-12 15:30:10 +08:00 说了半天,就是没说问题到底是什么?到底是哪里无解?什么地方冲突了? |
3 wfd0807 2019-03-12 15:41:46 +08:00 基本不用 lombok +10086 |
4 wanghaa 2019-03-12 15:46:42 +08:00 这种生成的不是标准的 java bean 结构,一般都是不推荐用,这个是省略掉 get set 前缀,如果想链式访问构造对象推荐用这个注解的另一个属性 chain=true // chain 的用法 new SomeClass().setStr("xxx").setA("xxx").setB("xxx"); |
5 feiyuanqiu 2019-03-12 15:57:47 +08:00 给每个字段加 @JsonProperty 注解吧 |
6 foutin 2019-03-12 15:57:50 +08:00 |
![]() | 7 passerbytiny OP @wanghaa #4 这种情况只能临时解决,java bean 这种必须有 Getter、Setter 的规范,已经越来越撑不住了 @feiyuanqiu #5 这个不管用,它只能解决名称不同,不能解决没有 Getter、Setter @foutin #6 不是这个 |
8 wc951 2019-03-12 16:10:38 +08:00 via Android 这种实验性注解不敢瞎用 |
9 micean 2019-03-12 16:19:38 +08:00 换 gson^_^ |
10 micean 2019-03-12 16:20:29 +08:00 |
![]() | 11 gz911122 2019-03-12 16:52:58 +08:00 gson 应该是可以的 |
12 feiyuanqiu 2019-03-12 16:55:26 +08:00 ![]() @passerbytiny #7 ![]() |
![]() | 13 BBCCBB 2019-03-12 16:55:36 +08:00 @Accessors(fluent = true) 那就不要用这个特性吧,jackson 需要使用字段的 get,set 方法来处理字段 |
&nsp; 14 notreami 2019-03-12 17:01:53 +08:00 不用 lombok,是什么鬼?难道还在 jdk1.5 ?? |
![]() | 15 samples 2019-03-12 17:04:52 +08:00 @feiyuanqiu 这个圣光主题...... |
![]() | 16 passerbytiny OP @feiyuanqiu #12 多谢测试,看来 Jackson 在设置读取值的时候回做兼容性处理,只不过在决定有哪些字段的时候只认 Getter、Setter,或 Builder。 |
![]() | 17 liaojl 2019-03-12 19:32:35 +08:00 via Android 标题已经说了“不要涉及该不该用 Lombok ”,评论区里还一堆人说不要用 lombok |
18 yujunhao8831 2019-03-12 19:58:01 +08:00 |
19 lidfather 2019-03-12 21:15:34 +08:00 via Android 确实没什么好用的,还得安装插件 |
21 CamD 2020-07-02 14:16:56 +08:00 idea 自动生成 setter,getter 不也就解决了,而且肯定兼容需要调用 setter,getter 的地方 |