我正在做一个Rest集成项目,并且正在为我正在实现的API尝试一个PUT API请求。这是PUT操作实施开始时的代码的一部分。不合逻辑的空指针异常
String name = vivienda.getName();
Vivienda oldVivienda = repository.getViviendas(name);
if (oldVivienda == null) {
throw new NotFoundException("No se ha encontrado ninguna vivienda con el nombre="+ vivienda.getName());
}
的是,当我的要求去做,它返回我宣布那里NotFoundException
,所以它没有工作。
与我本地化的错误是,当然,对象oldVivienda
是null
,因为如果我试图做一些与它的getName
代码播放,这会让NullPointerException
。
但这里是我开始不理解任何东西。我更改了代码以尝试找到错误的位置,直接将名称字符串如下所示:
Vivienda oldVivienda = repository.getViviendas("vivienda1");
if (oldVivienda == null) {
throw new NotFoundException("No se ha encontrado ninguna vivienda con el nombre="+ vivienda.getName());
}
这很好用。这会导致认为问题出在参数对象vivienda
,它的名称是空的或不是“vivienda1”。但是,请记住例外?在例外情况下,我使用vivienda.getName()
,当我看到响应中出现的错误时,它实际上会显示“vivienda1”。所以我给对象发送了罚款,当你做vivienda.getName()
时,它返回“vivienda1”。当你把字符串“vivienda1”放入repository.getViviendas("vivienda1")
时,它可以很好地工作。
那么,问题在哪里?类型有问题吗?但是getName
是一个返回String的简单get方法。我已经多次查看是否有空间或某处有空间。错误在于这两行代码中,但我不知道发生了什么。
你需要使用一些断点调试....它看起来就像这样:*** vivienda.getName(); ***正在返回null –
你的'repository'类里面有什么?如果你使用'repository'中的'=='运算符比较字符串,可以解释这种行为。 –
“_但是,请记住例外情况吗?_”嗯,不,因为你没有提供它。 ;)你确定没有空间或任何东西?请为此例外提供[mcve]。为了以防万一,请使用'vivienda.getName()。trim()'。 – AxelH