为什么可以';我不能用Java访问这个创建的对象吗?
我有一个关于这个简单Java对象创建的问题 我的代码如下所示:为什么可以';我不能用Java访问这个创建的对象吗?,java,oop,object,Java,Oop,Object,我有一个关于这个简单Java对象创建的问题 我的代码如下所示: @RequestMapping(value = "/salvaDatiContabiliEnte", method = RequestMethod.POST) public String salvaDatiContabiliEnte(HttpServletRequest request, Model model) throws Exception { CodIbanEspanso ibanEspanso; Tid
@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
“ibanEspanso”
ibanEspanso无法解析为变量
怎么可能呢?为什么当程序输入上一条
if
语句时,无法找到该对象是否已初始化?我遗漏了什么?可能是因为您的参考资料没有初始化。您可以尝试以下方法:
CodIbanEspanso ibanEspanso = null;
ibanEspanso
永远不会在if语句之后使用。把它放在if语句之后,任何操作都可以:
System.out.println(ibanEspanso);
不能取消对不保证初始化为某个对象的指针的引用。当
…getIban()==null
时会发生什么?@boristeider的确切含义是什么?你能更深入地解释一下吗?我的意思是,当gestioneDatiContabiliForm.getIban()==null
ibanEspanso有什么值?请参阅,“局部变量(§14.4,§14.14)在使用前必须显式给定一个值”。如果尝试使用ibanEspanso
,则会出现编译器错误,例如ibanEspanso可能尚未初始化。这与此无关,如果使用OPs代码,则无法编译。