为什么我不能在Java中访问这个创建的对象?

时间:2016-02-10 10:19:20

标签: java oop object

我遇到了与这个简单的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语句时初始化了该对象,为什么不能找到它?我错过了什么?

2 个答案:

答案 0 :(得分:5)

可能是因为您的引用未初始化。您可以尝试以下方式:

CodIbanEspanso ibanEspanso = null;

答案 1 :(得分:-3)

在if语句之后永远不会使用

ibanEspanso。把它放在if语句后的某个地方,任何事都可以:

System.out.println(ibanEspanso);