我有一个与这个简单的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";
}
Run Code Online (Sandbox Code Playgroud)
如您所见,在我的方法的开头,我声明了一个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
}
Run Code Online (Sandbox Code Playgroud)
使用调试器我看到它确实输入了if语句,它确实检查了对象字段是否被其构造函数正确初始化.
但是,在if声明之后,如果我尝试查看ibanEspanso对象的内容(我已初始化),Eclipse调试器会给出以下错误消息:
"ibanEspanso" <error(s)_during_the_evaluation>
ibanEspanso cannot be resolved to a variable
Run Code Online (Sandbox Code Playgroud)
这怎么可能?如果在程序进入上一个if语句时初始化了该对象,为什么不能找到它?我错过了什么?
小智 5
也许是因为你的引用没有初始化.您可以尝试以下方法:
CodIbanEspanso ibanEspanso = null;
Run Code Online (Sandbox Code Playgroud)