Pessoal
Quero escrever um método que:
- Receba um parâmetro Class de um tipo T (na verdade uma interface).
- Receba um segundo parâmetro Class que necessariamente seja uma subclasse (no meu caso subinterface) do tipo T.
- Retorne o tipo T.
Escrevi a seguinte assintura:
public <T, N extends T> T meuMetodo(Class<T> intf, Class<N> subinterface) { ... }
Com esta assinatura eu consigo passar para o método tanto:
AInterface retorno = meuMetodo(AInterface.class, ASubinterface.class);
quanto:
AInterface retorno = meuMetodo(AInterface.class, AInterface.class);
E eu queria restringir o segundo parâmetro via generics a somente aquelas interfaces que estendessem diretamente a interface passada no primeiro parâmetro, ou pelo menos restringir para que não se conseguisse passar a mesma interface do primeiro parâmetro no segundo.
Será que isso é possível via generics?