JavaのBoolean
型とboolean
型の違い、特にGWTに関連するものについて理解したいと思います。メソッドがサポートされていないことは知っていますが、利用可能な場合は詳細情報が必要です。
GWTファクターが違いを生むかどうかはわかりませんが、一般的には:
booleanはJavaプリミティブ型であるのに対しBooleanは、ブール値をラップするオブジェクト/参照型です
このようなプリミティブとオブジェクト間の変換は、ボクシング/アンボクシングと呼ばれます。
詳細は次のとおりです。
http://javaeye.wordpress.com/2008/06/17/boxing-and-unboxing-conversion/
なぜあなたは尋ねるのですか?
http://Java.Sun.com/j2se/1.5.0/docs/guide/language/autoboxing.html
それはかなりシンプルで、GWTとJavaでも同じです。
したがって、NULLが必要な場合(たとえば、データベースからフィールドをロードする場合、およびNULLをfalseとは異なるようにする場合)は、ブール値に固執します。
Javaでは、boolean
はリテラルtrue
またはfalse
ですが、 Boolean
はboolean
。
Boolean
のようなオブジェクト参照が必要な場合を除いて、boolean
の代わりにList
を使用する理由はほとんどありません。
Boolean
には静的メソッド parseBoolean(String s)
も含まれています。
ブール値はnullになる可能性があるため、遅延読み込みに使用できます。
if(hasRoots == null){
calculateRoots();
}
Javaにはプリミティブ型(int、boolean、floatなど)があり、それらをオブジェクトのインスタンスとして使用する場合はいつでも、関連するClass型にラップされます。たとえば、ブール値はブール値、整数などの整数でラップされます。
それにも利点があります。ブールにはヘルパーメソッドがありません(クラスではないため)が、ブールにはあります。したがって、文字列をブール値に変換する場合は、Boolean.valueOf( "true")を試すことができます。
お役に立てば幸いです。
ブールはプリミティブ型ですが、ブールはラッパークラスです。同じことが(int、Integer)、(long、Long)などに適用されます。ラッパークラスは、それぞれのプリミティブデータ型をそのクラスのオブジェクトに「ラップ」します。
コレクションではプリミティブ型が許可されていないため、コレクションで使用されます。また、ラッパークラスを使用すると、そのオブジェクトで呼び出すことができる多くのメソッドにアクセスできます。文字ラッパークラスには次のようなメソッドがあります。
isDigit()–文字が数字かどうかを判断します。 isLower()–文字が小文字のアルファベットかどうかを判断します。 is Letter()–文字がアルファベットかどうかを判断します。
ラッパークラスと比較してプリミティブ型を使用する場合、上記のメソッドは使用できません。
GWTに関する限り、GWTでもJavaと同じです。
booleanはプリミティブであり、ブールオブジェクトラッパー内。
GWT JREエミュレーションドキュメント(- http://code.google.com/webtoolkit/doc/1.6/RefJreEmulation.html )によると、これらのメソッドはブール型でサポートされています:Boolean(boolean)、Boolean (String)、parseBoolean(String)、toString(boolean)、valueOf(boolean)、valueOf(String)、booleanValue()、compareTo(Boolean)、equals(Object)、hashCode()、toString()
ブールオブジェクトタイプとブールオブジェクトタイプの違いについて。ブールオブジェクトは3つの状態になることがあるため、まったく同じではありません。しかし、それがGWT(パフォーマンスの面で)に違いをもたらす場合、私は手がかりを持っていませんが、GWTコンパイラーはコードを最適化し、ほとんどの操作はネイティブのjavascriptブール操作に単純にマッピングできるので、それは大した問題ではないと思います。
しかし、いつものように、確実に測定する必要があります(測定するブラウザー/バージョンによって異なる可能性があることを考慮してください)。
ブールネイティブタイプはより自然であるため、ブールオブジェクトタイプは通常あまり使用されません(常にnullをチェックする必要はありません)。