我有一个POJO
,其中有10-15个字段(可以是原始字段,自定义对象或字符串)。我要合并字符串中的所有NonNull
字段。
是否有任何不使用10-15 if statements
的干净方法。
您可以使用反射:
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。
如果只是一个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