Utilidade de classes genéricas

Olá,
Não consigo ver uma utilidade clara para criação de classes genéricas. Em que elas ajudam?
Sei que métodos genéricos ajudam e muito, porém para classes eu realmente não entendo.
Se alguém puder me explicar, agradeço! :slight_smile:

O caso clássico são as classes que compõem a Java Collections Framework - e esse foi um dos motivos para sua inclusão no Java.

Exemplo clássico:

(Sem generics)

List lista = new ArrayList();

lista.add("lalalal");

String x = (String)lista.get(0);

(Com genérics)

List<String> lista = new ArrayList<String>();

lista.add("lalalal");

String x = lista.get(0);//não necessita cast

O que faz com que o método get retorne String, é porque a classe foi configurada com o tipo genérico String…

Pode parecer quase inutil eliminar o cast… mas em programas mais complexos isso resolve muitos problemas já que vc sabe com qual tipo de dados está trabalhando…

Outro exemplo:

No Next (framework que desenvolvo), eu utilizo generics na classe dessa forma…

Eu tenho um DAO genérico (que faz acesso ao banco de dados), ele já possui vários métodos implementados, quando construo um DAO faço assim:

public FuncionarioDAO extends GenericDAO<Funcionario> {
}

Graças a esse generics na classe, posso usar os métodos FuncionarioDAO, e eles retornarão objetos da classe Funcionario, veja:

FuncionarioDAO funcionarioDAO = new FuncionarioDAO();

Funcionario f = funcionarioDAO.load(1);

List<Funcionario> lista = funcionarioDAO.findAll();
1 curtida