2012-03-19 8 views
1

私はフィールド "CustAmount"が2倍であるBeanを持っています。私はBeanをテストしようとしましたが、これを理解していないようです。ローカルマシンで実行すると0.0インスタンス化されたとき私がLinuxテスト環境で同じコードを実行すると、nullのままです。そのために検索されたデータの意味に違いがあります。私はバックエンドにnullとしてCustAmountを送信します。データを取得しますが、0.0としてCustAmountを送信すると、クエリは0.0に基づいて行われ、何も返されません。Java doubleは0.0に初期化されています

コードが同じ場合はどうなりますか?Java 1.5でコンパイルされた新しいMyBean()を実行すると、doubleがnullのままで、1.6では0.0に初期化される可能性があります。

これは2つのJavaバージョンで発生するものであるかどうかわかりませんが、私の最後には唯一の違いがあります。

ありがとうございます。

コードスニペットを追加:

public class MyBean { 

private double custAmount; 

    public void setCustAmount(double custAmount) { 
     this.custAmount = custAmount; 
    } 
public double getCustAmount() { 
     return custAmount; 
    } 

} 

をそして私はちょうど

MyBean mybean = new MyBean(); 

そのダブルが、二重のない操作を行います。 Syed ..

+5

これを再現するいくつかの小さなコードは役に立ちます:) –

+0

これは、Javaのバージョンやサーバー環境とは関係ありません。おそらく、これはWebアプリケーションです。両方のマシンで同じサーバーの同じバージョンを実行していますか? –

+0

@PetarMinchev二重に0.0の値が得られる単純な新しいMyBean() – sarmahdi

答えて

12

A Java doubleフィールドは、デフォルトで0.0に初期化されます。 Java Doubleフィールドは、デフォルトでnullに初期化されます。これら二つの事実は関係なく、あなたがそれを実行してどのような環境でどのようなあなたが使用するJavaのバージョン、および関係なく、真なることはありません。


あなたは異なる環境で異なる振る舞いを見ている場合は、最も可能性のある説明は、あなたのことですそれぞれの環境で異なるコードを実行しています(または同じコードをさまざまな方法で呼び出しています)。問題を示すコードを投稿するとが別の問題を指摘するかもしれませんが、私はそれを疑っています。あなたの投稿コードに基づいて


custAmountnullであるために、それは不可能です。 nullが表示されている場合は、そのコードの別のバージョンを使用するか、nullが他のソースから送信されている必要があります。

+1

そして、 'double'はプリミティブなのでヌルにすることはできません。私はStephenに同意します、おそらく別のコードを実行しています。 –

+0

コードは同じでした。しかし、いくつかのXSL変換が行われていて、そこでは二重が異なって扱われ、私のXSLは更新されませんでした。そうですね、私のコードは違っていました。 – sarmahdi

0

私は同様の問題がありました。私は私のロングが0に初期化すると思った。しかし、それ自体は初期化されていなかったが、私のページの<p:selectOneMenu />から。

  <p:selectOneMenu value="#{myBean.myLongValue}"> 
       <f:selectItem value="#{null}" itemValue="#{null}" itemLabel="-" /> 
       <f:selectItems ... /> 
      </p:selectOneMenu> 

フォームから何とか設定していない場合は、ページを確認してみてください。

関連する問題