GENERICS JAVA 5: Usar ou não usar? eis a questão

Na verdade, os generics não foram feitos com o mesmo intuito dos templates. E nem ajudam no quesito de escrever menos métodos, como os templates fazem. Os generics vieram para restringir os tipos, não permitir que uma classe suporte mais tipos.

Veja, o que tinhamos antes dos genérics é que classes gerais obrigatoriamente deveriam ser de um tipo de objeto alto na hierarquia. Isso implicava em casts, muitas vezes perigosos, pois elas suportavam “tipos demais”.

Com os generics é possível restringir isso, e criar uma classe que, apesar de ainda suportar qualquer coisa, possa saber que tipo ela está tratando “naquele momento”. E, com isso, limitar o que é ou não incluído em seu interior.

É diferente dos templates, que efetivamente ampliam o sistema de tipos. Nos templates, esquecemos que existem tipos e consideramos como positivo qualquer coisa que tenha uma interface compatível.

PS: Cuidado para não ressuscitar tópicos. Você comentou num tópico do ano passado.

Pessoal, só para esclarecimento, quando eu coloco um método genérico
a intenção é restringir quem pode utilizar esse método?

Por exemplo, eu tenho a minha super classe e tenho as minhas subclasses
o método abaixo só pode ser usado por quem herdar de Superclasse?

view plaincopy to clipboardprint?

public <? extends SuperClasse> List<E> metodo(List<E> lista){ //meu código... }