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

[Dúvida] Adicionar a uma lista por meio de uma composição.

Boa noite pessoal. Eu estou tentando escrever um projeto de cadastro de pessoas. Criei uma classe para Telefones e a acomplei a classe Hóspede. A intenção é cadastrar 0 ou mais telefones numa lista e retorná-la. Consigo retornar apenas um número de telefone na lista mas não consigo adicionar mais números. Segue abaixo o código pois preciso de ajuda:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class DadosPessoais {

    private String nome;
    private String cpf;
    private  LocalDate dataNascimento;

    public DadosPessoais(String nome, String cpf, LocalDate dataNascimento) {
        super();
        this.nome = nome;
        this.cpf = cpf;
        this.dataNascimento = dataNascimento;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public LocalDate getDataNascimento() {
        return dataNascimento;
    }

    public void setDataNascimento(LocalDate dataNascimento) {
        this.dataNascimento = dataNascimento;
    }

    @Override
    public String toString() {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        return "Nome: " + this.getNome().toUpperCase() + 
                "\ncpf: " + this.getCpf() + 
                "\nData de Nascimento: " + formatter.format(this.getDataNascimento()); 
    }

}
public class Telefone {

    private String telefone;

    public Telefone(String telefone) {
        this.telefone = telefone;
    }

    public String getTelefone() {
        return telefone;
    }

    public String toString() {
        return getTelefone();
    }
}
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;

public class Hospede {

    private DadosPessoais dadosPessoais;
    private String email;
    private Telefone telefones;

    public Hospede(String nome, String cpf, LocalDate nascimento, String email, Telefone telefones) {
        this.dadosPessoais = new DadosPessoais(nome, cpf, nascimento);
        this.email = email;
        this.telefones = telefones;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public List<Telefone> getTelefones() {
        List<Telefone> telefones = new ArrayList<>();
        telefones.add(this.telefones);
        return telefones;
    }

    @Override
    public String toString() {
        return dadosPessoais.toString() + "\nEmail: " + email + "\nTelefone: " + this.getTelefones().toString();
    }
}
import java.time.LocalDate;
import java.time.Month;

public class Main {

    public static void main(String[] args) {

        Hospede hospede = new Hospede
                ("gustavo", "111.111.111-11", LocalDate.of(1980, Month.MARCH, 13), 
                 "gustavo@gmail.com", new Telefone("999"));

        System.out.println(hospede.toString());
    }
}

Desde já agradeço pela colaboração.

2 respostas
solução!

na sua classe Hospede o atributo telefones deverai ser uma lista de telefones e não apenas o objeto telefone. ficaria: List telefones = new ArrayList<>();

o getter e setter dele deve apenas retornar ou setar o atributo. ex:

    public List<Telefone> getTelefones() {
        return telefones;
    }

    public void setTelefones(List<Telefone> telefones) {
        this.telefones = telefones;
    }

para adicionar um novo telefone a lista, basta usar o getTelefones().add(new Telefone("numeroDoTelefone"));

e na hora de instaciar no main vc poderia usar

Hospede hospede = new Hospede("gustavo", "111.111.111-11",  
            LocalDate.of(1980, Month.MARCH, 13), "gustavo@gmail.com", 
                Arrays.asList(
                    new Telefone("777"),
                    new Telefone("888"),
                    new Telefone("999")
                ));

Bom dia Rafael,

Deu certo! Muitíssimo obrigado e bons estudos.