2010-09-13 Collection#contains() の引数はObject型 Java 次のようなコード HashSet<Long> set = new HashSet<Long>(); set.add(1L); set.contains(1); // => ? これはfalseになる。リテラルの1はboxingがかかってもInteger型にしかならず、Long型の1とは一致しない。しかもコンパイルエラーにもならない。あやうく嵌りそうになった。 あと、add() のほうは引数にEを取るので、set.add(1) はコンパイルエラーになる。 Map#containsKey() などでも同じ。