为什么simplexml将NULL设置为字段,如果在xml中它是空的?

时间:2015-04-24 11:12:42

标签: java xml string null simple-framework

考虑此代码:

new db_connection()

我有这个xml:

public class Param {

    @Text(required = false)
    protected String param;

    public String getValue() {
        return param;
    }
}

解析此xml <item key="Key"></item> 后,返回null而不是空字符串。

为什么会出现这种行为?

2 个答案:

答案 0 :(得分:0)

此行为表示发现它具有空(非空格)值。所以String绑定到甚至没有初始化(不会占用内存)。

因为String a="";是一个初始化变量,它在低级别分配了内存。否则,如果设置为空,则无需初始化。对于类对象的企业应用程序来说,这可能是昂贵的。

更多

关于string是一个char数组,每个char都与ASCII

相关联

测试

String a="";
System.out.println(a));

输出:

//[B@459bdb65

String a;
System.out.println(a));

输出:

java.lang.RuntimeException: Uncompilable source code - variable a might not have been initialized

关于char的地方

char a='A';
System.out.println((int)a);

输出:

65

答案 1 :(得分:-1)

AFAIK您遇到的行为是您的代码所期望的。

如果要将空元素作为空字符串而不是null返回,最好的方法是构建Converter

另一种方法是通过注释并使用该行为,您可以根据需要对其进行注释:

@Element(name = "PARAM", required = true)
private String param;

如果drop为空,required = true将抛出异常。如果不允许空掉落,您可以使用此功能。

第二种方式设置为required = false,因此如果它为空则将被反序列化为null:

boolean isEmpty = ( a.getParam() == null );