5

JAVAのプリミティブ型の代わりにInteger、Booleanなどを使用する方法を誰かが説明してくれますか?

彼らが提供している利点を理解できないようです。これらは、null 値を処理するという不必要な問題を引き起こしているようです。

ありがとう!

4

4 に答える 4

8

Boolean、、、 ...IntegerLongオブジェクトです。プリミティブ型を使用できない場所で使用できます。

  • のようなコレクションにそれらを保存するMap
  • それらをテンプレートパラメーターとして使用する
  • nullそれらに値を割り当てる
  • より一般的な方法でそれらを使用する (例:LongとしてNumber)

例:

new ArrayList<Integer>();
Long id = null;
Number num = new Long( 3 );
于 2010-05-21T06:17:03.063 に答える
4

たとえば、アプリがユーザー データを保存する場合、社会保障番号が不明な場合があります。その場合、-1 の代わりに null を格納する方がクリーンです。

また、マップに格納したり、ポリモーフィズムを使用したりするなど、プリミティブ型で実行できないこともあります (Double と Integer はどちらも Number のインスタンスです)。

于 2010-05-21T06:19:43.970 に答える
4

Integer、Boolean などの論理的根拠は、参照型を必要とするコンテキストでプリミティブ型を使用できるようにすることです。古典的なユースケースは、要素の型が何らかの参照型でなければならない、セット、リスト、マップ、キューなどを提供するコレクション API です。

したがって、私は書くことができます:

List<Integer> list = new ArrayList<Integer>();

しかし、以下はコンパイルエラーです:

List<int> list = new ArrayList<int>();

プリミティブ ラッパー型のこの使用例は、ジェネリック型と「新しい」コレクション API の両方よりも前のものであり、コレクション型だけが元の (ジェネリック前の) 形式のVectorHashtable、およびそれらの同類だった時代にさかのぼることに注意してください。

于 2010-05-21T06:18:38.007 に答える
1

プリミティブは常に高速です。
ただし、オブジェクトが本当に役立つ場合もあります
。 1. アップキャスト。あなたの関数は、引数として Number (すべての数値オブジェクトの親です: Integer、Float など) を取ることができます。
2. null 値の可能性。たとえば、データベースに保存するときに使用されます。オブジェクトは null にすることができます。プリミティブには値が必要です。したがって、db のフィールドが null 許容の場合は、プリミティブ値のオブジェクト バージョンを使用することをお勧めします。
3. 関数がオブジェクトを取り、常にプリミティブを指定する場合、オートボクシング (プリミティブをオブジェクトに変換) に費用がかかります。関数から戻る場合も同様です。
4. オブジェクトには、getHashcode()、toString() などの特定のメソッドがあり、場合によっては非常に便利です。

于 2010-05-21T06:29:24.540 に答える