São as classes genéricas assim como você faz List lista = new ArrayList(); a declação da classe ArrayList por exemplo é assim
public class ArrayList<E> extends AbstractList<E>.
o códigoclass Carro <T implements Comparable>{}
quer dizer que o tipo genérico dessa classe TEM que implementar Comparable. E o
é chamado de “Super Genérico” hehehehe, que quer dizer que o tipo genérico é desconhecido.
Espero ter ajudado
joaoorso
Acho que ainda não entendi...
Então se eu faço isso:
public class ClasseGenerica <String> {
}
O compilador não deveria me proibir de fazer isso :
ClasseGenerica<Number> c = new ClasseGenerica<Number>();
:?: :?:
E no caso :
classCarro<?extendsNumber>{}
Significa que o tipo genérico é desconhecido? Como assim . Penssi que seria qualquer coisa que fizer extends em Number .
:?: :?:
Também ainda não entendi o significado das letras ...
classCarro<TimplementsComparable>{}
no caso T
publicclassArrayList<E>extendsAbstractList<E>
No caso E
:?: :?:
Desculpe minha ignorância.
Obrigado por ajudar ! :thumbup:
Giulliano
Vamos lá…
T = Type
E= Element
Diferença na prática, nenhuma. Na teoria são apenas nomenclaturas padões java. Pode ser X, Y, Z, o que vc quiser…(se não me engano)
se vc diz que :
publicclassCarro<?extendsNumber>();
então só poderá instanciar essa classe passando como genérico algo que extenda ou implemente number…ou ainda não passar ninguém poq genéricos não são obrigatórios…servem apenas para tempo de compilação.
Se vc põe ? significa q vc não sabe o que virá…por isso o sinal.
Se vc põe String…então acredito q o compilador não deixe usar um Number…
mesmo pq a idéia às vezes é receber uma String para usar métodos de String e Number não os possui.
Compila normalmente, < String> é o nome do generic.
Estava confundindo. O compilador não pode deixar isso acontecer :
publicclassClasseGenerica<TextendsString>{publicvoidfirst(String...args){ClasseGenerica<Number>c=newClasseGenerica<Number>();// Erro de compilação//ClasseGenerica<String> c = new ClasseGenerica<String>();// compila}}
Agora sim !!! 8)
Tudo entendido. Só restou a pequena dúvida no outro tópico, cidado acima.