Metodos Genericos

2 respostas
nicoweda

Ola pessoal,

Estou trabalhando na minha DAO Factory (que eu estou chamando de Repository) e estou tentando sem sucesso fazer um metodo generico.

Segue o codigo abaixo

public <T> Dao<T> getType(Class type){
		log.debug("Getting dao for type ["+type.getName()+"]");
		return new DaoImpl<T>(type, this.getSession());
	}

Porem infelizmente naum estou tendo sucesso na chamada desse metodo.
Minha intencao eh chamar o metodo parametrizando ele e jah recebendo o DaoImpl parametrizado.

Como eu devo fazer a chamada desse metodo?
Minha tentativa eh

Dao<WhatEver> dao = repository.getType<WhatEver>(WhatEver.class);

alguem sabe onde estou errando???

Abracos

2 Respostas

T
interface Dao<T> {
    T get();
}

class DaoImpl<T> implements Dao<T> {
    private Class<T> klass;
    public DaoImpl (Class<T> klass, Object session) {
        this.klass = klass;
    }
    public T get() {
        try {
            return klass.newInstance();
        } catch (InstantiationException ex) {
	    throw new RuntimeException ("Wrong type", ex);
        } catch (IllegalAccessException ex) {
	    throw new RuntimeException ("Wrong type", ex);
        } 
    }
}

class Repository {
    public<T> Dao<T> getType (Class<T> klass) {
        return new DaoImpl<T>(klass, null);
    }
}

class TesteDAO {
    public static void main(String[] args) {
        Repository repository = new Repository();
        Dao<Integer> dao = repository.getType (Integer.class);
    }
}
Abdon

Uma duvida:

Por que existe este parametro Object session que não é usado em lugar algum?

Criado 21 de maio de 2007
Ultima resposta 22 de mai. de 2007
Respostas 2
Participantes 3