合并POJO的所有非null属性

问题描述 投票:3回答:2

我有一个POJO,其中有10-15个字段(可以是原始字段,自定义对象或字符串)。我要合并字符串中的所有NonNull字段。

是否有任何不使用10-15 if statements的干净方法。

java if-statement pojo code-cleanup
2个回答
1
投票

您可以使用反射:

Foo foo = new Foo(3, 89, null);

Field[] fields = foo.getClass().getDeclaredFields();

for(Field field: fields) {
    Object fieldValue = field.get(foo);
    if(fieldValue != null) {
        // Do your actual logic here
        System.out.println(fieldValue);
    }
}

具有这样的Foo类:

    static class Foo {
        int bar;
        int barre;
        String barString;

        public Foo(int bar, int barre, String barString) {
            this.bar = bar;
            this.barre = barre;
            this.barString = barString;
        }
    }

注意:这是假设您可以访问Foo中的字段,如果它们是私有的,则必须使用getters。


0
投票

如果只是一个String,则可以连接起来,然后将null替换为空白,但是请注意用于附加字段的附加字符(您不希望看到类似john ,,, 22 ,,, true)

检查此示例

class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        // your code goes here
        String x = null;
        String a="Hello";
        Long l1=null;
        Long l2=55L;

        String r=a+x+l1+l2;
        r=r.replace("null", "-");
        System.out.println(r);
    }
}

这将打印

你好--55

© www.soinside.com 2019 - 2024. All rights reserved.