Metodo que aceita um tipo qualquer de objeto como parametro

Bom dia, preciso contruir um metodo que receba como parametro qualquer tipo de objeto. Uma instancia de Object, certo?
Mas como vou fazer para acessar seus métodos? Isso é possivel?
Em um caso terei 5 métodos getter’s, em outro 2, em outro n. Tem como eu fazer isso dinamicamente? Sem alterar codigo ?
Grato, andré.

Ah, pensei em reescrever o método toString() de cada classe que fosse usar o determinado método, fazendo com que ele concatene todos os getter’s com um caracter especial no meio (%,$,&), e meu método, consideraria cada intervalo como um parametro. O que voces acham? Viajei?

Cara use reflection,passe uma classe para seu metodo e depois carregue ela via reflection e chame seus metodos.

Dei uma olhada em reflection, em um tutorial do GUJ, não me pareceu muito “simples”. É a unica forma de se fazer isso?

Realmente a melhor forma é usando reflaction…
teria como postar o código e ser mais especifico com oque você deseja??

Ainda não comecei realmente a escrever, porque estou pensando na melhor forma de fazer isso.
Na verdade é um teste. Quero escrever uma classe que popule minhas tabelas dinamicamente.
Essa é a assinatura do método:

public boolean preencherTabela(List<String[]> listaDados, JTable tabela, ModeloTabela mdltbl);

E ao invéz de ele receber uma lista com varias Strings[], queria que ela recebesse uma referência de Object, e chamasse os métodos getter’s ali dentro mesmo. O problema é que nem todos os métodos getter’s devem ser chamados, visto que nem todos os dados devem constar na tabela. Entederam? Estou errando em algum ponto ?

P.S.: ModeloTabela extende DefaultTableModel

Dê uma olhada no código do ObjectTableModel. O link para ele está na minha assinatura.

kra eu implementei uma classe parecida, para gerar um json para ser utilizado com um grid que implementamos também plugin do jquery.

eu digo quais métodos get devem ser chamados, exemplo

objeto tem um getName e getDate

objeto obj = objeto.setColumn(“name”).create(listobjects);

via reflection eu so executo o getName, e funciona com objetos complexos: exemplo

objeto1 tem getObjeto2

Objeto2 tem getLastName

objeto obj = objeto.setColumn(“objeto2.lastname”).create(listobjects);

eu posto quando voltar da reunião

“simples”???

É a melhor forma de fazer algo dinamicamente.

Mais precisamente: http://markutils.googlecode.com/svn/trunk/src/mark/utils/swing/table/ObjectTableModel.java
E a parte que le as propriedades dos objetos estão nesse pacote.
http://code.google.com/p/markutils/source/browse/trunk/src/mark/utils/#utils/el

Ta ai a classe, eu implementei algo básico pro que eu precisava, eu e meu irmão vamos disponibilizar em um repositório (provável git) o grid (plugin do JQuery) e a implementação melhorada.

Aceito criticas e sugestões, lembrando que desenvolvo em java só a 3 meses :oops:

Obrigado.

não se se ajuda, mas tenho esse metodo que recebe um Object e le seus metodos, e por eles ele acessa os atributos, isso esperando que todos os atributos tenham gets e sets.

[code] public static void metodo( Object entidadeOriginal) {

    Method[] methodsOriginal = entidadeOriginal.getClass().getMethods();

    for (int i = 0; i < methodsOriginal.length; i++) {
        Method methodOriginal  =  methodsOriginal[i];
        try {
            if (methodOriginal.getName().startsWith("get") ) {
                String attr = methodOriginal.getName().substring("get".length());
                attr = Character.toLowerCase(attr.charAt(0)) + attr.substring(1);
                Object valorOriginal = methodOriginal.invoke(entidadeOriginal, new Object[] {});


            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}[/code]

Ve se ajuda ai!

[quote=bruno.costa]Ta ai a classe, eu implementei algo básico pro que eu precisava, eu e meu irmão vamos disponibilizar em um repositório (provável git) o grid (plugin do JQuery) e a implementação melhorada.

Aceito criticas e sugestões, lembrando que desenvolvo em java só a 3 meses :oops:

Obrigado.[/quote]

Sugestões ? críticas ? ninguém?

ta tao ruim? :cry:

Acho que no Apache Commons tem uma classe que já consegue copiar propriedades de um Bean, só dar uma pesquisada. Mas sim, reflection do Java é Rídiculo e díficil. Se vc pegar um ActionScript ou Lua, fazer isso que vc está querendo seria mongol. Mas melhor eu parar de falar mal de Java no GUJ se não apanho :twisted:

Eu achei o reflection do java “ridiculo” de facil ! não tem nada de complicado.

Só pra abrir mentes, segue a função a que escrevi para ler todos atributos de um “objeto” genérico em lua:

[code]a= function(obj)
for k,v in pairs(obj) do
print(k,v)
end
print ()
end

b={}

a(b)

b.x=1

a(b)

b.y=2

a(b)

b.z=“uma string”

a(b)[/code]

Não quero criar Flame de linguagem x verus y, mas o fato é que reflection é ridículo. Não precisava ser tão complexo.

Eu achei o reflection do java “ridiculo” de facil ! não tem nada de complicado.[/quote]

Pra quem só tem martelo, tudo é prego.

Se realmente colocarem closures no Java 7, aí a coisa vai melhorar.

[quote=renzonuccitelli]Só pra abrir mentes, segue a função a que escrevi para ler todos atributos de um “objeto” genérico em lua:

[code]a= function(obj)
for k,v in pairs(obj) do
print(k,v)
end
print ()
end

b={}

a(b)

b.x=1

a(b)

b.y=2

a(b)

b.z=“uma string”

a(b)[/code]

Não quero criar Flame de linguagem x verus y, mas o fato é que reflection é ridículo. Não precisava ser tão complexo.

[/quote]

entendi, mas a implementação que eu fiz, eu pego somente os métodos que você quiser, e não todos, e pego também em objetos complexos.