Fiquem a vontade para sugerirem correções e melhorias.
Classe Main:
package br.com.trtron.listadesafio;
import java.util.ArrayList;
import br.com.trtron.listadesafio.model.Pessoa;
public class Main {
public static void main(String[] args) {
//Nas linhas abaixo, criamos variáveis do tipo Pessoa que receberão as instâncias de objetos.
//Os objetos são criados com new e usamos o construtor cheio para preencher seus atributos, sem a necessidade de
//setter agora.
Pessoa pessoa1 = new Pessoa(23, "Thiago");
Pessoa pessoa2 = new Pessoa(18, "Lucas");
Pessoa pessoa3 = new Pessoa(56, "João");
//Criamos uma variável "pessoas" do tipo ArrayList que gerará uma lista de um tipo de elemento, nesse caso Pessoa.
//new ArrayList<>() cria uma nova lista atribuida a pessoas
ArrayList<Pessoa> pessoas = new ArrayList<>();
pessoas.add(pessoa1);
pessoas.add(pessoa2);
pessoas.add(pessoa3);
//Nos prints, não precisamos chamar o toString, ele é chamado automaticamente. E como sobreescrevemos o método
//na classe Pessoa, o print será feito conforme a nova função.
System.out.println("Tamanho da lista: " + pessoas.size());
System.out.println("Primeira pessoa da lista: " + pessoas.get(0));
System.out.println(pessoas);
}
}
Classe Pessoa:
package br.com.trtron.listadesafio.model;
public class Pessoa {
private String nome;
private int idade;
//Aqui um "construtor cheio", ou construtor com parâmetros foi criado. Desta forma, é possível criar um objeto com seus
//atributos, no momento em que é instanciado.
public Pessoa(int idade, String nome) {
this.idade = idade;
this.nome = nome;
}
//Aqui temos um "construtor vazio", ou sem parâmetros. Ao usá-lo, instanciamos e somos obrigados a usar os setters para
//atribuir valores aos atributos de um objeto
public Pessoa(){}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getIdade() {
return idade;
}
public void setIdade(int idade) {
this.idade = idade;
}
//Sobrescrita do método toString herdado da classe-mãe Object. Fazemos ele retornar algo mais amigável quando se
//tratar de um objeto do tipo Pessoa
@Override
public String toString() {
return "Nome: " + this.getNome() + " idade: " + this.getIdade();
}
}
Saída esperada:
Tamanho da lista: 3
Primeira pessoa da lista: Nome: Thiago idade: 23
[Nome: Thiago idade: 23, Nome: Lucas idade: 18, Nome: João idade: 56]