みんな大好きjava.util.Listでラッパークラスのお仕事を説明してみる

http://docs.oracle.com/javase/7/docs/api/java/util/List.html
プリミティブ型を要素として扱う事が出来ない事が解ると思う

java1.5以前のコードは以下のようになる
List list = new ArrayList();
long pLong1 = 123L;
Long oLong1 = new Long(pLong1); ラッパークラスを用いてプリミティブをオブジェクトで梱包する
Object o1 = (Object)oLong1; Objectクラスにダウンキャスト
list.add(o1);
Object o2 = list.get(0);
Long oLong = (Long)o2; Longクラスにアップキャスト
long pLong2 = oLong.longValue();

java1.5以降のコード
List<Long> list = new ArrayList<Long>();
long pLong1 = 123L;
list.add(pLong1); プリミティブで扱えるのはオートボクシングがラッパークラスに置き換えているため。<Long>と書くことで判別している
long pLong2 = list.get(0);

すべてのプリミティブ型には対応するラッパークラスが用意されている。java1.5以降ならコーダーはそこをあまり気にしなくておk
ジェネリクスの理解の方が優先される