List error with null reference in Java

Asked

Viewed 243 times

0

Calling any method in any null reference will always result in an exception. How could I fix this?

public class frmStatusAprovacaoGeral implements AdapterInterface{


    @Override
    public void back(EntityWrapper arg0, Activity arg1) {

    }

    @Override
    public void start(Task arg0, EntityWrapper arg1, Activity arg2) {
        // Pega Entity wrapper do Processo
        WFProcess process = arg2.getProcess();
        NeoObject obj = process.getProcessEntity();
        EntityWrapper ewobj = new EntityWrapper(obj);


        //tenha a lista de parcelas 
        Long numeroParcelas;
        try {
            numeroParcelas = (Long) ewobj
                    .findValue("contratoEformPosEscolha.pagamento.nroParcelas");
        } catch (Exception e) {
            numeroParcelas = (long) 1;
        }

                //estou pegando o campo aprovacaoGerencia para saber se ela foi aprovada
                List<NeoObject> listaParcelasGerencia = (List<NeoObject>) ewobj
                .findValue("frmParcelasAprovacaoGerencia");

                //estou pegando o campo aprovacaoAprovadorExtra para saber se ela foi aprovada
                List<NeoObject> listaParcelasExtraUm = null;
                try{
                listaParcelasExtraUm = (List<NeoObject>) ewobj
                        .findValue("frmParcelasAprovadorExtraUm");
                }catch(Exception e){
                    Log.error(e);
                }


                //estou pegando o campo aprovacaoAprovadorExtra2 para saber se ela foi aprovada 
                List<NeoObject> listaParcelasExtraDois = null;
                try{
                    listaParcelasExtraDois = (List<NeoObject>) ewobj
                        .findValue("frmParcelasAprovadorExtraDois");
                } catch (Exception e){
                    Log.error(e);
                }


                //estou pegando o campo aprovacaoAprovadorExtra3 para saber se ela foi aprovada 
                List<NeoObject> listaParcelasExtraTres = null;
                try {
                    listaParcelasExtraTres = (List<NeoObject>) ewobj
                            .findValue("frmParcelasAprovadorExtraTres");
                } catch (Exception e) {
                    Log.error(e);
                }



                //estou adicionando as respostas na listaParcelas
                List<NeoObject> ListaParcelaAtualGeral = (List<NeoObject>) ewobj
                .findValue("contratoEformPosEscolha.listaParcelas");


        for (long i = 0; i < numeroParcelas; i++) {

            NeoObject parcelaAtualGeral = ListaParcelaAtualGeral.get((int) i);
            EntityWrapper ewParcelaAtualGeral = new EntityWrapper(parcelaAtualGeral);

            //gerência
            //----------------------------------------------------------------------
            NeoObject parcelaAtualGerencia = listaParcelasGerencia.get((int) i);
            EntityWrapper ewParcelaAtual = new EntityWrapper(parcelaAtualGerencia);

            boolean aprovacaoGerencia = (boolean) ewParcelaAtual.findValue("aprovacaoGerencia");    
            ewParcelaAtualGeral.setValue("aprovacaoGerencia", aprovacaoGerencia);
            //----------------------------------------------------------------------

            //extra um
            //Chamar qualquer método em qualquer referência nula sempre resultará em uma exceção. 
            //Teste se o objeto é nulo primeiro:
            //----------------------------------------------------------------------
            if ( (listaParcelasExtraUm != null) || !listaParcelasExtraUm.isEmpty()){
                NeoObject parcelaAtualExtraUm = listaParcelasExtraUm.get((int) i);
                EntityWrapper ewParcelaAtualExtraUm = new EntityWrapper(parcelaAtualExtraUm);

                boolean aprovacaoAtualExtra1 = (boolean) ewParcelaAtualExtraUm.findValue("aprovacaoAprovadorExtra");    
                ewParcelaAtualGeral.setValue("aprovacaoAprovadorExtra", aprovacaoAtualExtra1);
            }
            //----------------------------------------------------------------------

            //extra dois
            //----------------------------------------------------------------------
            if ( (listaParcelasExtraDois != null) || !listaParcelasExtraDois.isEmpty()){
                NeoObject parcelaAtualExtraDois = listaParcelasExtraDois.get((int) i);
                EntityWrapper ewParcelaAtualExtraDois = new EntityWrapper(parcelaAtualExtraDois);

                boolean aprovacaoAtualExtra2 = (boolean) ewParcelaAtualExtraDois.findValue("aprovacaoAprovadorExtra2"); 
                ewParcelaAtualGeral.setValue("aprovacaoAprovadorExtra2", aprovacaoAtualExtra2);
            }
            //----------------------------------------------------------------------


            //extra três
            //----------------------------------------------------------------------
            if ( ( listaParcelasExtraTres != null) || !listaParcelasExtraTres.isEmpty()){
                NeoObject parcelaAtualExtraTres = listaParcelasExtraTres.get((int) i);
                EntityWrapper ewParcelaAtualExtraTres = new EntityWrapper(parcelaAtualExtraTres);

                boolean aprovacaoAtualExtra3 = (boolean) ewParcelaAtualExtraTres.findValue("aprovacaoAprovadorExtra3"); 
                ewParcelaAtualGeral.setValue("aprovacaoAprovadorExtra3", aprovacaoAtualExtra3);
            }
            //----------------------------------------------------------------------


            PersistEngine.persist(parcelaAtualGeral);

        }   
    }   
    @Nullable
    Long ValidaCampo() {
        return null;

    }

}
  • Any of the List can come empty or null, for example : frmParcelasAprovarExtraUm

  • Do the answers given answer your question? Is there anything any of us can improve? If you have, please leave a comment.

  • Has any response helped solve the problem and can address similar questions from other users? If so, make sure to mark the answer as accepted. To do this just click on the left side of it (below the indicator of up and down votes).

3 answers

1

Calling any method in any null reference will always result in an exception. How could I resolve this?

Checking whether the list is null or not before trying to access anything on it

Ex.:

if(listaParcelasExtra != null){
    listaParcelasExtra.fazerAlgumaCoisa();
}

1

You can set a default value if it is null, for example:

if (listaParcelasExtraUm == null) {
  listaParcelasExtraUm = new ArrayList<>();
}

Or simplifying using ternary operator:

listaParcelasExtraUm = listaParcelasExtraUm == null ? new ArrayList<>() : listaParcelasExtraUm;

0

If you want, you can remove all null entries from your lists and continue working normally without having to check input by input:

suaLista.removeAll(Collections.singleton(null));

Original post

Browser other questions tagged

You are not signed in. Login or sign up in order to post.