3

ArrayListInteger Object をof typeに追加できることを理解していIntegerます。それは私には理にかなっています。このような:

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(new Integer(3));

しかし、代わりに int のようなプリミティブ データ型を追加できるのはなぜIntegerですか? このような:

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(3);

なんで許されるの??

4

1 に答える 1

17

これは と呼ばれautoboxingます。Long対応するプリミティブ ( -> longInteger->など)を持つクラスの場合int、Java が変換を処理します。

この動作にはいくつかの暗いコーナーがあることに注意してください。

  1. パフォーマンスのペナルティ;
  2. 特殊なケース:nullがプリミティブにボックス化解除されると、 aNullPointerExceptionがスローされます。これは、プリミティブが例外をスローしているように見えるため、プログラマーにとって予期しないものである可能性があります。
于 2013-05-19T16:49:55.040 に答える