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;
}
}