V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
5ispy
V2EX  ›  程序员

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

  •  
  •   5ispy · 2020-05-14 10:56:08 +08:00 · 2516 次点击
    这是一个创建于 1636 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题。补充:需要放的 30 个变量是指定好的。

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

    ......

    }
    16 条回复    2020-05-14 15:15:40 +08:00
    promise2mm
        1
    promise2mm  
       2020-05-14 11:00:14 +08:00
    放变量名还是具体值?你是怎么指定这 30 个变量的?
    promise2mm
        2
    promise2mm  
       2020-05-14 11:01:33 +08:00
    这让我想起了之前某位 v2er 说的 X Y problem? 先让大家明白你这样做目的是什么?
    pws22
        3
    pws22  
       2020-05-14 11:03:06 +08:00   ❤️ 1
    反射+注解
    guyeu
        4
    guyeu  
       2020-05-14 11:04:27 +08:00
    出现这种睿智代码的主要原因可能是上游什么业务写得睿智。。不过这个问题本身,可能 json 序列化+反序列化的代码最简介(当然效率不是最优)
    rockyou12
        5
    rockyou12  
       2020-05-14 11:04:43 +08:00
    EastLord
        6
    EastLord  
       2020-05-14 11:08:24 +08:00
    用楼上现成的轮子或者 按照 3 楼
    pushback
        7
    pushback  
       2020-05-14 11:14:13 +08:00
    反射可以
    pushback
        8
    pushback  
       2020-05-14 11:14:42 +08:00
    pushback
        9
    pushback  
       2020-05-14 11:15:20 +08:00
    异常替换成 boolean 就行
    XenoAmess
        10
    XenoAmess  
       2020-05-14 11:17:06 +08:00
    如果低性能要求高灵活度要求,就反射。
    如果高性能要求,就生成。
    Jrue0011
        11
    Jrue0011  
       2020-05-14 11:26:25 +08:00
    前面几楼已经说了,想要让业务方法里代码简短,就找轮子或者自定义注解+反射,虽然其实背后处理的代码不少。。。想最大性能就手动往 List 放
    5ispy
        12
    5ispy  
    OP
       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
        13
    yaocai321  
       2020-05-14 14:18:33 +08:00
    怎么折腾 你都少不了,根据业务找字段这个过程。
    所以重点是怎么设计这个“过程”而不是找字段
    if(场景 1)
    字段 1 字段 2
    else if(场景 2)
    字段 1 字段 2
    else if(场景 3)
    yaocai321
        14
    yaocai321  
       2020-05-14 14:20:05 +08:00
    按下 tab + 回车 把没编辑完的内容发出去了 尴尬。
    算了,楼主去悟吧
    xcstream
        15
    xcstream  
       2020-05-14 15:04:38 +08:00
    写个 if else 其实用时也不多
    jaryur
        16
    jaryur  
       2020-05-14 15:15:40 +08:00
    Apache Common BeanMap
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2915 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:58 · PVG 22:58 · LAX 06:58 · JFK 09:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.