我有一个bean,我有一个字段“CustAmount”,它是双倍的,我尝试测试bean,我似乎不明白这一点:当我在我的本地机器上运行时,它在实例化时被初始化为0.0。当我在我的linux测试环境中运行相同的代码时,它仍然是null。由于检索到的数据存在差异,这意味着如果我将CustAmount作为null发送到我的后端,我会获得一些数据,但如果我将CustAmount发送为0.0,则查询将在0.0的基础上完成,并且不会向我发回任何内容。
如果代码相同,这怎么可能呢?有可能当我在java 1.5中编译新的MyBean()时,double仍然为null,在1.6中它被初始化为0.0。
我不知道这是在两个Java版本中发生的事情,但这是我最终的唯一区别。
感谢任何提示。
添加代码段:
public class MyBean {
private double custAmount;
public void setCustAmount(double custAmount) {
this.custAmount = custAmount;
}
public double getCustAmount() {
return custAmount;
}
}
我只是做
MyBean mybean = new MyBean();
它不是双倍而是双倍。 赛义德..
答案 0 :(得分:12)
Java double
字段将默认初始化为0.0
。 Java Double
字段将默认初始化为null
。无论您使用什么版本的Java,无论您在何种环境中运行它,这两个事实都将成立。
如果您在不同的环境中看到不同的行为,那么最可能的解释是您在相应的环境中执行不同的代码(或以不同的方式调用相同的代码)。发布一些显示问题的代码可能会指出其他一些问题,但我对此表示怀疑。
根据您发布的代码,custAmount
为null
是不可能的。在您看到null
的情况下,您必须使用该代码的不同版本,或者null
必须来自其他来源。
答案 1 :(得分:0)
我有类似的问题。我认为我的Long初始化为0.但它本身没有初始化,而是来自我页面上的<p:selectOneMenu />
。
<p:selectOneMenu value="#{myBean.myLongValue}">
<f:selectItem value="#{null}" itemValue="#{null}" itemLabel="-" />
<f:selectItems ... />
</p:selectOneMenu>
因此,如果您没有从表单中以某种方式设置页面,请尝试检查您的页面。