Instanciar classe generica dentro de outra classe generica. É possível?

Olá bom dia, preciso de uma ajuda.

Por exemplo, tenho uma classe dao generica hibernate: DaoGenerico<T, Seriazable> e uma outra TableDataController.

É possivel eu instanciar a classe DaoGenerico dentro da table TableDataController? com isso eu quando instanciasse o TableDataController passando minha classe Bicicicleta.class por exemplo ele ja passaria a bicicleta tambem para o Dao???

será que fui claro, rsrsrsrs???

Desde já obrigado.

Existe uma maneira de acessar os tipo genéricos passados para uma classe, mas eu pessoal, acho isso uma maneira bem feia, pois gera alguns warns :slight_smile:

segue exemplo:


// precisa ser extendida, se vc tentar instanciar em tempo de execução e tentar acessar os tipos parametrizados, o java não conseguirá enxergalos.
public abstract class DAOGenerico<T, ID extends Serializable> {
	
	public T createEntityInstance() {
		try {
			ParameterizedType parameterizedType = (ParameterizedType) getClass().getGenericSuperclass();
			Class<T> klass = (Class<T>) parameterizedType.getActualTypeArguments()[0];
			return klass.newInstance();
		} catch (Exception e) {
			return null;
		}
	}
}

public class UsuarioDAO extends DAOGenerico<Usuario, Integer> {
	
}

//teste:

public class Main {
	
	public static void main(String[] args) {
		UsuarioDAO usuarioDAO = new UsuarioDAO(); //aqui poderia ser uma factory, que retorna um DAOGenerico<T, ?>* ... *esse interrogação também não é de meu agrado ...
		Usuario usuario = usuarioDAO.createEntityInstance();
		System.out.println("Usuario: " + usuario);
	}
}

É questão de opinião, mas, geralmente componentes muito “Generico” fica dificil de dar aquela manutenção específica. Eu prefiro sempre ter uma base e depois fazer um extends. Não to em casa agora, se não conseguir fazer o que quer, chegando em casa eu faço e posto o fonte aqui.