为什么我的字符串不接受null?

时间:2015-04-23 12:09:50

标签: java string nullpointerexception

如果在mapper.getChave中找不到它,我需要String 接收空值。返回的是什么。我所做的?如果我只获得nullPointerException

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());

** UPDATE :第一次循环运行时,我有一个Nullpointer,chave包含一个值

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

输出

false   Veículo Veículo

5 个答案:

答案 0 :(得分:2)

您需要为mapper以及chave添加空检查。

if (mapper!= null && chave != null && !"".equals(chave) {
    // do something
}
mapper.getChave(chave.trim())
       ^              ^   possible places for NPE.

答案 1 :(得分:1)

很可能chavemapper的值为null,而您分别在其上调用trim().getChave()会导致nullpointer

答案 2 :(得分:0)

你需要在修剪它之前检查chave是否为null 或做其他事情(我假设mapper已预先初始化且不是< / em> null,但你也应该检查一下)

e.g。

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

您可能会发现使用Apache Commons StringUtils.isNotBlank(String)之类的内容更容易(更直观)。有关文档,请参阅here

答案 3 :(得分:0)

linha.keySet()中有一个空字符串引用。

答案 4 :(得分:0)

按照代码将空字符串更改为“”:您可以将“”更改为您喜欢的任何内容

String novaChave = mapper.getChave((chave == null ? "" : chave).trim());