2015-04-23 26 views
0

我需要字符串接收空值如果它在mapper.getChave中找不到,則返回。我做的事?如果我只得到nullPointerException爲什麼我的字符串不接受null?

for(String chave : linha.keySet()) { 
       //Processa chave 
       String novaChave = mapper.getChave(chave.trim()); 
       if (!(novaChave == null || novaChave.isEmpty())) { 
        //Processa valor 
        String novoValor = linha.getString(chave); 
        temp.append(novaChave, novoValor); 
       } 
       else { 
        extras.append(chave, linha.getString(chave)); 
       } 

      } 

登錄

java.lang.NullPointerException 
    at oknok.validacao.readers.PlanilhaReader.processaAtributosPlanilha(PlanilhaReader.java:237) 

237線是

String novaChave = mapper.getChave(chave.trim()); 

**更新:第一次循環運行,我有一個空指針和chave包含a值

System.out.println(chave.isEmpty() + "\t" + chave + "\t" + chave.trim()); 

輸出

false Veículo Veículo 
+0

NULL是什麼 - 映射器或蔡夫? – DaveH

+0

'mapper'初始化了嗎? 「chave」的價值是什麼? – Stefan

+0

確保在你調用它的方法之前,String對象不是null。代碼中的行號是什麼? –

回答

2

您需要添加空校驗爲mapper以及chave

if (mapper!= null && chave != null && !"".equals(chave) { 
    // do something 
} 

mapper.getChave(chave.trim()) 
    ^   ^ possible places for NPE. 
+0

Mapper爲null,idk爲什麼。是一個Spring存儲庫和我的代碼:'@Autowired Mapper映射器;' –

+0

你實例化你的類PlanilhaReader的對象嗎?即在代碼中的任何位置執行'新的PlanilhaReader()'? –

+1

我正在運行沒有Spring註釋的jUnit單元測試。謝謝。 –

0

你需要檢查chave是否爲空修剪,或做其他事情(我假設mapper預先初始化和空,但你應該檢查)

eg

if (chave != null && !"".equals(chave.trim()) { 
    // now do something 
} 

您可能會發現使用類似Apache Commons StringUtils.isNotBlank(String)的東西更容易(更直觀)。有關文檔,請參閱here

0

linha.keySet()中有一個空字符串參考。

1

最有可能的chavemapper值是零,你是呼籲他們trim().getChave()分別導致空指針

+0

'chave'的值不爲空或不爲空,我有一個nullPointerException –

+0

@DanielaMarquesdeMorais,那麼你可以參考我的答案。 –

+1

@DanielaMarquesdeMorais然後檢查'mapper'的值。嘗試'mapper'的打印值 – silentprogrammer

0

跟蹤代碼更改爲空字符串 「」:你可以改變 「」 到任何你喜歡的

String novaChave = mapper.getChave((chave == null ? "" : chave).trim()); 
相關問題