Erro na ArrayList [RESOLVIDO]

4 respostas
Joao_Pedro_Magalhaes

Ainda sou iniciante na linguagem Java e estou encontrando uma dificuldade.
Vou colocar o código, caso não entendem me fale.

O erro está na primeira e segunda linhas, mas não consigo identificar:

import model.ModelProduto;



public ArrayList retornarListaProdutoDao() {

ArrayList listaModelProduto = ArrayList < > ();

ModelProduto modelProduto = new ModelProduto();

try {

this.conectar();

this.executarSQL(SELECT

+ pk_id_produto,

+ pro_nome,

+ pro_valor,

+ pro_estoque,

+ FROM tbl_produto;);
while (this.getResultSet().next()) {
            modelProduto = new ModelProduto();
            modelProduto.setIdProduto(this.getResultSet().getInt(1));
            modelProduto.setProNome(this.getResultSet().getString(2));
            modelProduto.setProValor(this.getResultSet().getDouble(3));
            modelProduto.setProEstoque(this.getResultSet().getInt(4));
            listaModelProduto.add(modelProduto);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        this.fecharConexao();
    }
    return listaModelProduto;
}

4 Respostas

Tuna

Para criar um objeto no Java, você deve usar a palavra reservada new, veja um exemplo abaixo.

ArrayList<Object> listaUm = new ArrayList<Object>();
ArrayList<Object> listaDois = new ArrayList();

OBS. 1: NA DECLARAÇÃO DO ARRAYLIST VOCÊ DEVE INFORMAR O TIPO DO OBJETO.
OBS. 2: AS DUAS SINTAXES ACIMA SÃO VALIDAS.

Outro ponto importante a se destacar é que para usar o ArrayList você deve importar o mesmo da biblioteca util, segue abaixo um exemplo.

import java.util.ArrayList;

Uma observação, veja!
Se você já criou um abjeto modelProduto do tipo ModelProduto

não há necessidades de criar o mesmo objeto outra vez (enquanto while for true), como você fez aqui:

Uma boa saída seria:

ModelProduto modelProduto;
modelProduto = new ModelProduto();

Abraço!

staroski

Claro que há a necessidade, se ele não instanciar um novo objeto dentro do laço, ela só estará alterando as propriedades do mesmo objeto e sempre adicionando o mesmo objeto na lista.
Tem que instanciar um novo objeto sim, setar as propriedades dele e inserir na lista.

Joao_Pedro_Magalhaes

Obrigado pela ajuda, consegui resolver o problema.

Tuna

Verdade, faz sentido, você está certo, obrigado!
(dei até uma olhada em uns códigos velhos aqui :joy:)

Correção.: Não precisa criar o objeto fora, dentro while já resolve.

Criado 11 de maio de 2019
Ultima resposta 12 de mai. de 2019
Respostas 4
Participantes 3