Reflection

7 respostas
L

Fazer um comparator generico sem reflexão!? é possível?

7 Respostas

B

Ixi… agora não me ocorre como não?! só se vc for comparar igualando a instnacia só;; tipo ob1 == ob2… mas não é bom…

victor.godinho

Pode, claro.

Você pode fazer por sobre-escrita do método equals, ou pode sobre-escrever o toString (meio POG esse aqui, mas dá…), sobre-escrita do hashCode.

Bem, se veio de outra linguagem como Ruby (método de atribuição, multiplicação, … ), então a resposta é mais simples: Java não tem isso. ^^

Abraços

L

mais especificamente:

Criar um método genérico de ordenação para uma lista de um mesmo tipo de bean, tomando como critério de ordenação um atributo qualquer do bean.

Exemplo:

A lista1 contém vários beans da classe “PessoaBean”. A classe “PessoaBean” tem o método “getNome”.
A lista2 contém vários beans da classe “LivroBean”. A classe “LivroBean” tem o método “getEditora”.

Criar um método para ordenar por “nome” a lista1. O mesmo método, sem nenhuma alteração, deve possibilitar a ordenação de qualquer outra lista de beans como, por exemplo, a lista 2 por “editora”.

victor.godinho

chamar um método dinamicamente sem Reflection? (para fazer a comparação), isso não dá né filhote. :S

Agora oque voce pode tentar fazer nesse caso, é criar uma interface, por a galera pra implementar ela, criar um método tipo: “int comparate(String type, Object obj)”, saka??? e ai dentro desse método cada classe ter sua implementação.

Não é o jeito mais elegante, mas rola… Mas… porque não usar reflection? Ou é só curiosidade?

Falows

B

leo.almeida:
mais especificamente:

Criar um método genérico de ordenação para uma lista de um mesmo tipo de bean, tomando como critério de ordenação um atributo qualquer do bean.

Exemplo:

A lista1 contém vários beans da classe “PessoaBean”. A classe “PessoaBean” tem o método “getNome”.
A lista2 contém vários beans da classe “LivroBean”. A classe “LivroBean” tem o método “getEditora”.

Criar um método para ordenar por “nome” a lista1. O mesmo método, sem nenhuma alteração, deve possibilitar a ordenação de qualquer outra lista de beans como, por exemplo, a lista 2 por “editora”.


Usando o conceito de propriedades é tranquilo fazer isto…

O conceito de propriedades, usado por exemplo dos objetos swing, definem que cada atributo tera uma constante com seu nome, dae vc tera um metodo Comparator getPropertie(String propertieName); dae vc cria um Comparator que ordene este cara, ele sempre recebe o nome da propriedade e usa para recuperar a propriedade e comparar… saca?

T

Use isto aqui.

BeanComparator

Ele faz as coisas sangrentas de “reflection” por você, deixando para você só a parte boa.

L

BeanComparator usa introspection que usa reflection…

Criado 4 de agosto de 2008
Ultima resposta 5 de ago. de 2008
Respostas 7
Participantes 4