Pesquisar neste blog

terça-feira, 3 de julho de 2012

Java AbstractTableModel - Implementando método getValueAt com reflection







Reflection é uma característica da plataforma Java que permite obter informações de forma introspectiva, ou seja de sim mesmo, em tempo de execução. Com esse recurso, uma classe consegue ler a si mesmo e obter informações que podem ser usadas pelo desenvolvedor. Nesse exemplo esse recurso foi usado para implementar o método getValueAt da AbstractTableModel.
Primeiramente foi necessário criar uma Array de Strings para armazenar o nome dos campos da classe respeitando-se maiusculas e minusculas e uma lista tipada para armazenar as entidades:

private String[] fields = {"id","nome","endereco"};
private List<Entidade> myList = new ArrayList<Entidade>(); 

Em seguida foi implementado o método getValueAt:

@Override
    public Object getValueAt(int row, int col) {
        Entidade e = (Entidade)myList.get(row);        
        try {
            final Field field=e.getClass().getDeclaredField(fields[col]);
            if (field!=null){
                field.setAccessible(true);
                return field.get(e);
            }
        } catch (SecurityException e1) {
            return "Erro SE";
        } catch (NoSuchFieldException e1) {
            return "Erro NE";
        } catch (IllegalArgumentException e1) {
            return "Erro IAr";
        } catch (IllegalAccessException e1) {
            return "Erro IAc";
        }        
        return "";

    }






Uma atenção especial deve ser data a importação da classe Field. Deve ser usada a localizada no pacote indicado abaixo:

import java.lang.reflect.Field;


Seria isso.


Claudir Pereira dos Santos

Matelândia, 03/07/2012.

Nenhum comentário:

Postar um comentário