Java ,一个实体有 100 个成员变量,现在需要把其中某 30 个变量放到一个 list 里(需要有非空判断,不是空的才放进去, null 或者""不放进去),怎么写比较简洁

2020-05-14 10:56:08 +08:00
 5ispy
如题。补充:需要放的 30 个变量是指定好的。

示例如下:
@Data
public class Student {
private String name;
private String FirstName;
private String LastName;
private String SchoolName;
private String MotherName;
private String FatherName;

......

}
2459 次点击
所在节点    程序员
16 条回复
promise2mm
2020-05-14 11:00:14 +08:00
放变量名还是具体值?你是怎么指定这 30 个变量的?
promise2mm
2020-05-14 11:01:33 +08:00
这让我想起了之前某位 v2er 说的 X Y problem? 先让大家明白你这样做目的是什么?
pws22
2020-05-14 11:03:06 +08:00
反射+注解
guyeu
2020-05-14 11:04:27 +08:00
出现这种睿智代码的主要原因可能是上游什么业务写得睿智。。不过这个问题本身,可能 json 序列化+反序列化的代码最简介(当然效率不是最优)
rockyou12
2020-05-14 11:04:43 +08:00
EastLord
2020-05-14 11:08:24 +08:00
用楼上现成的轮子或者 按照 3 楼
pushback
2020-05-14 11:14:13 +08:00
反射可以
pushback
2020-05-14 11:14:42 +08:00
pushback
2020-05-14 11:15:20 +08:00
异常替换成 boolean 就行
XenoAmess
2020-05-14 11:17:06 +08:00
如果低性能要求高灵活度要求,就反射。
如果高性能要求,就生成。
Jrue0011
2020-05-14 11:26:25 +08:00
前面几楼已经说了,想要让业务方法里代码简短,就找轮子或者自定义注解+反射,虽然其实背后处理的代码不少。。。想最大性能就手动往 List 放
5ispy
2020-05-14 11:48:58 +08:00
@promise2mm 放具体的值。
这 30 个变量是业务指定的。
可以理解为这样的场景:
A 系统在多个场景下都会调用 B 系统的一个接口,接口返回的数据是个实体,里面有 100 个成员变量。
A 系统需要的数据都在这 100 个成员变量范围内,但是不同场景下需要的成员变量是不一样的。
A 系统拿到数据后都需要放到一个 list 里给到 C 系统。
比如:
场景一需要 firstName lastName
场景二需要 firstName schoolName
场景三需要 fatherName schoolName
。。。
yaocai321
2020-05-14 14:18:33 +08:00
怎么折腾 你都少不了,根据业务找字段这个过程。
所以重点是怎么设计这个“过程”而不是找字段
if(场景 1)
字段 1 字段 2
else if(场景 2)
字段 1 字段 2
else if(场景 3)
yaocai321
2020-05-14 14:20:05 +08:00
按下 tab + 回车 把没编辑完的内容发出去了 尴尬。
算了,楼主去悟吧
xcstream
2020-05-14 15:04:38 +08:00
写个 if else 其实用时也不多
jaryur
2020-05-14 15:15:40 +08:00
Apache Common BeanMap

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/671521

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX