null check per hashmap chiave

Ho uno scenario in cui ho bisogno di controllare per null. Ho una chiave denominata dT:

String dT = (String) caseChk.get("dT");

Questo getta una NullPointerException, dal momento che la chiave stessa non esiste. Se posso controllare con

if(caseChk.get("dT") != null) {
    //do something
}

ancora un altro NullPointerException è generata a causa di .get. Come posso testare per null quando un tasto nella mappa non esiste? Capisco che il put metodo dovrebbe gestire, ma che non è sotto il mio controllo.]

  • È caseChk != null ?
  • caseChk non è null. “dT’ non esiste in caseChk per scenari specifici. Quindi dovrei chk per la chiave, io credo.
  • L’unico motivo possibile per questa linea if(caseChk.get("dT") != null) per lanciare una NPE è che caseChk è null
  • Hashmap non gettare un NPE se la chiave non esiste. Restituisce null in questo caso. Si sono sempre NPE perché caseChk è null
InformationsquelleAutor JNPW | 2013-01-11

 

6 Replies
  1. 10

    Anche ora ho nullpoiner dal .ottenere throws exception

    Se caseChk.get("dT") è solo la linea che hai di te e di sicuro non è il lancio di eccezione, quindi l’unica possibilità è caseChk potrebbe essere null.

  2. 2

    Per verificare l’esistenza della chiave si dovrebbe usare HashMap#containsKey(key) funzione. Una volta che l’esistenza della chiave è possibile utilizzare HashMap#get(key) per ottenere il valore e confrontarlo con il valore null.

  3. 0

    caseChk potranno essere null provare questo

     String dT;
    if(chaseChk!= null) 
    dT= (String)caseChk.get("dT");`
  4. 0

    Provare questo utilizzando il metodo di verifica null

    public String checkNull_HashMap(Hashtable hashMap, String hashKey) {

        if (hashMap.get(hashKey) == null) {
            return "";
        } else {
            return hashMap.get(hashKey).toString();
        }
    }
  5. 0

    L’opzione migliore è di controllare null prima di chiamare toString()

    if ( hashMap.get(hashKey) != null ) { return hashMap.get(hashKey).toString(); }
    • Questo non riguardano l’esempio fornito dall’OP.
  6. 0

    Provare questo, questo sarà il lavoro.

        if(!caseChk.isEmpty)
        {
          String dT = (caseChk.containsKey("dT")?(String)caseChk.get("dT"):" ")
        }   

Lascia un commento