Probleminha encrencado

Querendo fazer uma interface gráfica inteligente, cai num problema que é o seguinte…
Tenho uma classe de entidade, por exemplo Cliente, ela tem CNPJ, NOME, TELEFONE.

Mas vamos supor que eu não saiba que ela tem esses atributos e nem saiba seus valores.
Preciso então de implementar algo que faca isso pra mim.

O que fiz até agora foi criar um objeto NomeValor, que relaciona cada atributo da classe e seu respectivo valor.
Mas o gasto de memória vai ser grande já que vou ter para cada objeto na memória, além do próprio objeto, varios objetos NomeValor para cada atributo seu.

ex:

[code]class Cliente
{
private cnpj;
private nome;
private telefone;

//gets e sets…

public NomeValor[] pegaAtributos()
{
//codigo…
}
}
[/code]

[code]
public class NomeValor
{
private String nome;
private Object valor;

public NomeValor(String n, Object v)
{
    this.nome = n;
    this.valor = v;
}


public String getNome()
{
    return this.nome;
}

public String getValorString()
{
    return this.valor.toString();
}

public Object getValorObject()
{
    return this.valor;
}

}[/code]

Alguem tem uma solucao mais elegante? que gaste menos memória? ou outra ideia?

Dá uma olhada no link

http://www.guj.com.br/article.show.logic?id=10

Muito obrigado
foi muito util