考虑此代码:
new db_connection()
我有这个xml:
public class Param {
@Text(required = false)
protected String param;
public String getValue() {
return param;
}
}
解析此xml <item key="Key"></item>
后,返回null而不是空字符串。
为什么会出现这种行为?
答案 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 );