2

この質問が何度か聞かれたことは知っていますが、質問に対する正しい答えが見つかりませんでした。ConcurrentHashMap から結果をフェッチするときに NullPointerException がスローされるのをどのように回避しますか。NullPointer をスローしている以下のコードがあります。

public static String getPersonInfo(String personAddress) {
    //if(concMap!=null && concMap.containsKey(personAddress))       
    return concMap.get(personAddress);  
            //return null;  
}

並行ハッシュマップでは、個人IDと住所を並行ハッシュマップに保存しています。場合によっては、id が null になります。データをマップに入れる前に null チェックを行いますが、データを読み込もうとすると以下のエラーが発生します。

java.lang.NullPointerException
at java.util.concurrent.ConcurrentHashMap.get(Unknown Source)

誰か助けてください:(これをデバッグしようとして3時間以上無駄にしました。オンラインで多くの投稿を見ていますが、それを回避するために何ができるかはまだはっきりしていません。

4

5 に答える 5

3

nullのキーです。この場合はpersonAddress(誰もが言っているように) null です。ただし、すべてをチェックするのが最も安全です。

public static String getPersonInfo(String personAddress) {
  if (personAddress != null && concMap != null && concMap.containsKey(personAddress)) {       
    return concMap.get(personAddress);
  }
  return null;
}

プリミティブ以外のほとんどすべてが null になる機能は、Java ではよくある頭痛の種であることを付け加えておきます。ほとんどの内部メソッドは、それを処理することさえ気にせず、単に NPE をスローします。将来何かが null にならない場合は、最初の有意義な機会にこれを確認してください。

于 2013-09-11T08:47:02.800 に答える
0

Java ide である JetBrains Idea を使用している (または使用を計画している) 場合は、JetBrains Idea によって開発された特定の注釈を使用できます。

基本的に、@Nullable と @NotNull があります。

于 2013-09-11T08:45:44.177 に答える