Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

ArrayList

Bom, comecei a aprender agora sobre arrayList e to com uma duvida: utilizando ArrayList, eu posso adicionar um outro elemento utilizando ArrayList.add, ta beleza. mas sempre antes de adicionar um elemento eu preciso dar um new() e informar todos os atributos? segue meu codigo de exemplo:

public class Cliente {

    String nome;
    String cpf;
    Endereco endereco;
    Data dataDeCadastro;

    public void imprimeCliente() {
        System.out.println("Nome: " + nome);
        System.out.println("CPF: " + cpf);
        System.out.println("Endereco: " + endereco.imprimeEndereco());
        System.out.println("Data de cadastro: " + dataDeCadastro.imprimeData());
        System.out.println("");
    }

}

package cadastroCliente;

public class Endereco {

    String rua;
    int numero;
    String bairro;
    String cidade;
    String estado;

    public String imprimeEndereco() {
        return this.rua + ", " + this.numero + "\n" + this.bairro + "\n" + this.cidade + " - " + this.estado;
    }

}

package cadastroCliente;

public class Data {

    int dia;
    int mes;
    int ano;

    public void formataData(int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }

    public String imprimeData() {
        return dia + "/" + mes + "/" + ano;
    }

}

package cadastroCliente;

import java.util.ArrayList;

public class TesteCliente {

    public static void main(String[] args) {

        Cliente cliente1 = new Cliente();
        cliente1.nome = "Joao da Silva";
        cliente1.cpf = "125.475.859-63";
        cliente1.endereco = new Endereco();
        cliente1.endereco.rua = "Jorge Lobato";
        cliente1.endereco.numero = 745;
        cliente1.endereco.bairro = "Vila Tiberio";
        cliente1.endereco.cidade = "Ribeirao Preto";
        cliente1.endereco.estado = "SP";
        cliente1.dataDeCadastro = new Data();
        cliente1.dataDeCadastro.formataData(22, 03, 2016);



        ArrayList<Cliente> clientes = new ArrayList<>();
        clientes.add(cliente1);


        cliente1.imprimeCliente();


    }

}
3 respostas

Não é necessário! A palavra reservada "new" serve apenas para você instanciar um objeto. Uma vez que esse objeto é instanciado todos os métodos que pertecem à ele podem ser usados sem problemas.

Então levando como conhecimento prévio que "ArrayList" é um objeto e "add" é um método desse objeto, ao fazer

ArrayList<Cliente> clientes = new ArrayList<>();

já não é mais necessário usar o new novamente. Você pode simplesmente ir usando o .add quantas vezes forem necessárias!

Resumindo: Para adicionar um novo cliente não é necessário usar o new novamente, ele é usado apenas uma vez. Você pode usar o .add quantas vezes for necessário uma vez que foi usado o new ao usar o ArrayList pela primeira vez.

mas se por exemplo eu dou um

clientes.add(cliente2);

ele nao aceita pq eu nao criei o objeto cliente2, dando um

Cliente cliente2 = new Cliente();

do jeito que to fazendo tem que criar objetos antes de adiciona-los ao ArrayList!

eh isso mesmo?

solução!

Leonardo, o correto de vc inicalizar o arraylist é, ArrayList clientes = new ArrayList<>(Cliente);,

E você precisa dar um new cliente2 sim, por que o objeto só existe se você cria-lo, e vc cria usando o new, então sim, vc precisa dar um new e este novo cliente tem seus dados pessoais diferentes