私は、少なくとも部分的に、1つの通話にまとめて1つの通話にできるようにすることだcontainsKey
と思いますget
。マップがnullを保持できる場合、get
その値のキーがないため、または単に値がnullだったためにnullが返されているかどうかを判断する方法はありません。
なぜそれが問題なのですか?自分でそれを行う安全な方法がないからです。次のコードを見てください。
if (m.containsKey(k)) {
return m.get(k);
} else {
throw new KeyNotPresentException();
}
以来m
同時マップで、キーkが間に削除されてもよいcontainsKey
し、get
なく、所望よりも、テーブルではなかったヌルを戻すには、このスニペットを引き起こし、呼KeyNotPresentException
。
通常は同期することで解決しますが、並行マップではもちろん機能しません。したがって、の署名はget
変更する必要があり、下位互換性のある方法でこれを行う唯一の方法は、ユーザーが最初にnull値を挿入しないようにし、それを「キーが見つかりません」のプレースホルダーとして引き続き使用することでした。