Classes Genéricas

3 respostas
L

Acho que esse assunto não deve ser muito difundido né..

Eu nunca tinha ouvido falar em classes genéricas em Java, e achava que o mais genérico que dava pra fazer era utilizar uma referencia Object para manipular dados de qualquer classe através de herança.

Esse recurso, que pelo jeito vem dos templates (ou gabaritos) de C++ é novo em Java? Foi implementado nas últimas versões?

Se não for, pq nao eh mto comum? Não tem mtas vantagens?
E como utilizá-lo bem? Não entendi direito ainda como declarar classes que utilizam isso. Por exemplo:

public class ClasseA <T>
{
       T dado;
       
       //assim funciona beleza
       public <T> ClasseA()
       {
              dado = null;
       }

       //assim o Eclipse indica erro
       //que nao pode converter de T para T
       //?????????
       public <T> ClasseA(T elemento)
       {
              dado = elemento;
       }
}

Obrigado pela ajuda e perdão se falei alguma bobeira :D

3 Respostas

M

Bom, ainda não me familiarizei o bastante com esse assunto, mas vou respondendo o que eu souber.

Generics é um novo recurso de Java. Surgiu apenas no Tiger e, por isso, você não deve ter ouvido falar antes. É um recursos similar aos templates de C++.

Note que generics não tem nada a ver com herança, apesar de se utilizar dela. Então, dizer que o Object é o mais genérico é um erro semântico.

Com generics você pode “tipar” parâmetros. O exemplo mais clássico que tenho visto é sobre Collections. Você pode definir o tipo da collection. Nas versões anteriores de Java, as Collections continham apenas Objetc. Daí a necessidade de casting e os erros freqüentes de ClassCastException.
Agora, você pode definir que a sua collection é de Integer e usar sem fazer casting e com detecção de erros em tempo de compilação.

Agora quanto ao seu exemplo, eu nunca vi uma declaração de classe assim:

public class ClasseA <T>

mas como eu disse, ainda não estou familiarizado com esse recurso.

Busque mais no Google sobre “generics”.

D

Eu tbm não!.. 8O

L

hmm valeu pelas respostas

É, eu vi mesmo o uso do generics nas Collections, facilita bastante o uso né?!
Mas minha dúvida maior mesmo era na criação de classes utilizando o generic, tipo, se eu quisesse criar um classe FilaEncadeada, com generic, como fazer…

Parece que ainda é meio um incógnita, e minha dúvida era mais curiosidade, aifinal, a gente pode se virar com os casts e Objects como vc falou né?!

Obrigado :slight_smile:

Criado 28 de maio de 2005
Ultima resposta 2 de jun. de 2005
Respostas 3
Participantes 3