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