我遇到了与这个简单的Java对象创建有关的问题。
我的代码如下所示:
@RequestMapping(value = "/salvaDatiContabiliEnte", method = RequestMethod.POST)
public String salvaDatiContabiliEnte(HttpServletRequest request, Model model) throws Exception {
CodIbanEspanso ibanEspanso;
Tid023Intervento progettoSelezionato = (Tid023Intervento) model.asMap().get("progettoSelezionato");
System.out.println("INTO salvaDatiContabiliEnte, progettoSelezionato: " + progettoSelezionato.toString());
Tid022Anagraficarup anagraficaRup = progettoSelezionato.getTid022Anagraficarup(); // Angrafica del RUP
Tid018Entebeneficiario enteBeneficiario = progettoSelezionato.getTid018Entebeneficiario(); // Ente beneficiario
DefaultMultipartHttpServletRequest multipartRequest = (DefaultMultipartHttpServletRequest) request;
GestioneDatiContabiliForm gestioneDatiContabiliForm = new ObjectMapper().readValue(multipartRequest.getParameterMap().get("form")[0], GestioneDatiContabiliForm.class);
if(gestioneDatiContabiliForm.getIban() != null) { // Se l'IBAN inserito non è null ---> Se la regione non è il Friuli
ibanEspanso = new CodIbanEspanso(gestioneDatiContabiliForm.getIban()); // Costruisce l'IBAN espanso a partire dal codice IBAN intero
}
return "blablabla";
}
正如您所看到的,在我的方法开始时,我声明了一个 CodIbanEspanso ibanEspanso 对象,并且我没有通过调用构造函数来初始化它。
然后我在这句话中初始化它:
if(gestioneDatiContabiliForm.getIban() != null) { // Se l'IBAN inserito non è null ---> Se la regione non è il Friuli
ibanEspanso = new CodIbanEspanso(gestioneDatiContabiliForm.getIban()); // Costruisce l'IBAN espanso a partire dal codice IBAN intero
}
使用调试器我看到它确实输入了if语句,它确实检查了对象字段是否被其构造函数正确初始化。
但是,在if
语句之后,如果我尝试查看 ibanEspanso 对象(我已经初始化)的内容,Eclipse调试器会给出以下错误消息:
"ibanEspanso" <error(s)_during_the_evaluation>
ibanEspanso cannot be resolved to a variable
怎么可能?如果在程序进入上一个if
语句时初始化了该对象,为什么不能找到它?我错过了什么?
答案 0 :(得分:5)
可能是因为您的引用未初始化。您可以尝试以下方式:
CodIbanEspanso ibanEspanso = null;
答案 1 :(得分:-3)
ibanEspanso
。把它放在if语句后的某个地方,任何事都可以:
System.out.println(ibanEspanso);