Ir para o conteúdo

Output do Conteúdo de Objectos

Frequentemente pode ser prático, para efeitos de debugging e outros, ter uma ideia generalizada do conteúdo de um objecto. A API Apache Commons, através de um dos seus componentes, está artilhada com exactamente aquilo que precisamos para esse efeito.

Ao adicionarmos o componente Lang ao nosso path, podemos listar de forma simples o conteúdo que forma algum dos nossos objectos:

Exemplo

import org.apache.commons.lang.builder.ReflectionToStringBuilder;

public class Teste {

    public static void main(String[] args) {
        Carro fiat = new Carro("Fiat", "500", "Azul", 4);
        Carro mercedes = new Carro("Mercedes", "CLK", "Cinza", 5);

        Morada m1 = new Morada("Rua das Flores", "2440", "Porto");
        Morada m2 = new Morada("Rua das Marias", "2340", "Leiria");
        Morada m3 = new Morada("Rua das Rosas", "2460", "Coimbra");

        Pessoa p1 = new Pessoa("Pessoa 1", "244123456", m1, fiat);
        Pessoa p2 = new Pessoa("Pessoa 2", "244443456", m2, fiat);
        Pessoa p3 = new Pessoa("Pessoa 3", "244663456", m3, mercedes);

        System.out.println("P1: " + ReflectionToStringBuilder.toString(p1));
        System.out.println("P2: " + ReflectionToStringBuilder.toString(p2));
        System.out.println("P3: " + ReflectionToStringBuilder.toString(p3));
        System.out.println("Alterações...");
        p1.setMorada(m3);
        p1.setCarro(mercedes);
        System.out.println("P1: " + ReflectionToStringBuilder.toString(p1));
        System.out.println("P2: " + ReflectionToStringBuilder.toString(p2));
        System.out.println("P3: " + ReflectionToStringBuilder.toString(p3));
    }

}

A execução do exemplo acima leva a:

P1: javaapplication22.Pessoa@54fc9944[nome=Pessoa 1,telefone=244123456,morada=Morada@1a0f73c1,carro=Carro@6c789144]
P2: javaapplication22.Pessoa@2b86c6b2[nome=Pessoa 2,telefone=244443456,morada=Morada@1d5ee671,carro=Carro@6c789144]
P3: javaapplication22.Pessoa@416b13c7[nome=Pessoa 3,telefone=244663456,morada=Morada@5cdf8f5e,carro=Carro@593d93f4]
Alterações...
P1: javaapplication22.Pessoa@54fc9944[nome=Pessoa 1,telefone=244123456,morada=Morada@5cdf8f5e,carro=Carro@593d93f4]
P2: javaapplication22.Pessoa@2b86c6b2[nome=Pessoa 2,telefone=244443456,morada=Morada@1d5ee671,carro=Carro@6c789144]
P3: javaapplication22.Pessoa@416b13c7[nome=Pessoa 3,telefone=244663456,morada=Morada@5cdf8f5e,carro=Carro@593d93f4]

Classe usadas no exemplo

public class Pessoa {

    private String nome;
    private String telefone;
    private Morada morada;
    private Carro carro;

    public Pessoa(String nome, String telefone, Morada morada, Carro carro) {
        this.nome = nome;
        this.telefone = telefone;
        this.morada = morada;
        this.carro = carro;
    }

    public Pessoa() {
        this("", "", null, null);
    }

    public Carro getCarro() {
        return carro;
    }

    public void setCarro(Carro carro) {
        this.carro = carro;
    }

    public Morada getMorada() {
        return morada;
    }

    public void setMorada(Morada morada) {
        this.morada = morada;
    }

    public String getNome() {
        return nome;
    }

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

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }
}
public class Morada {

    private String rua;
    private String codigo;
    private String localidade;

    public Morada(String rua, String codigo, String localidade) {
        this.rua = rua;
        this.codigo = codigo;
        this.localidade = localidade;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public String getLocalidade() {
        return localidade;
    }

    public void setLocalidade(String localidade) {
        this.localidade = localidade;
    }

    public String getRua() {
        return rua;
    }

    public void setRua(String rua) {
        this.rua = rua;
    }
}
public class Carro {

    private String marca;
    private String modelo;
    private String cor;
    private int velocidades;

    public Carro(String marca, String modelo, String cor, int velocidades) {
        this.marca = marca;
        this.modelo = modelo;
        this.cor = cor;
        this.velocidades = velocidades;
    }

    public String getCor() {
        return cor;
    }

    public void setCor(String cor) {
        this.cor = cor;
    }

    public String getMarca() {
        return marca;
    }

    public void setMarca(String marca) {
        this.marca = marca;
    }

    public String getModelo() {
        return modelo;
    }

    public void setModelo(String modelo) {
        this.modelo = modelo;
    }

    public int getVelocidades() {
        return velocidades;
    }

    public void setVelocidades(int velocidades) {
        this.velocidades = velocidades;
    }
}