Veja o exemplo:
class Exemplo<E> {
void acao() {}
}
@Target(ElementType.TYPE)
@interface Anotacao {}
@Anotacao
class ClasseAnotada {}
class Teste {
public static void main(String[] args) {
Exemplo<ClasseAnotada> e = new Exemplo<ClasseAnotada>();
e.acao();
}
}
Na classe Exemplo, eu consigo receber como tipo genérico qualquer tipo de classe.
Se eu alterasse a definição para:
class Exemplo<E extends Number> {
void acao() {}
}
por exemplo, eu restringiria o tipo de super-classe possível.
Minha dúvida é:
- Consigo generalizar a classe Exemplo a fim de apenas aceitar classes que tenham a anotação @Anotacao, por exemplo?