métodos genéricos

7 respostas
C

Alguém sabe qual a diferença de usar o ou o ?
No livro que leio diz o seguinte:

Não entendi bulhufas… Não pode ser qualquer letra não?

7 Respostas

Mikhas

Pode-se usar qualquer identificador Java valido. O mais usual é usar apenas uma letra que, por exemplo, pode ser “T”.

Ex

public interface Mapa<Chave,Valor>{

    public void put(Chave c, Valor v);
    public Valor get(Chave c);

}
Marky.Vasconcelos

É uma convenção, se voce estiver escrevendo uma coleção como a classe ArrayList, é costume usar , por que o tipo generico seria do tipo do Elemento.

Mas pode ser qualquer letra sim.

C

Ok… então o “E” é convenção para “Elemento”…
Mas e o “T”???

rmendes08

Sim, você pode usar qualquer identificador Java para identificar um parâmetro de tipo em uma classe ou método genérico. Ou seja, você pode usar qualquer identificador válido que o código compila. Isso não significa que você deva usar. Por exemplo, um nome perfeitamente válido de variável em Java seria :

int __$$$$x9 = 0; //péssimo nome de variável

Mas com certeza não é um bom nome, pois não diz nada sobre o que é essa variável. É o mesmo caso de parâmetros de tipo. No caso,
você pode usar qualquer coisa, mas foram definidas algumas convenções para obter padronização. As mais usadas são:

<K, V> - quando os parâmetros indicam um par Key/Value, usado em Maps

- para indicar elementos de uma coleção, vem de Element

- quaisquer outros casos, vem de Type.

C

Agora ficou claríssimo!
Vlw, man! :smiley:

marcelo.bellissimo

cake:
Ok… então o “E” é convenção para “Elemento”…
Mas e o “T”???

… Type? :roll:

(edit: sim, demorei pra responder e dupliquei a resposta, foi mal! )

ViniGodoy

Sim, pois T será substituído por um tipo de dado.

interface List<T> { //código aqui }

Lista de um tipo T qualquer.

Essa nomenclatura vem dos templates do C++. Lá é comum chamar os tipos de dados de tipos, inclusive classes. Existe até um comando para renomear tipos chamado typedef.

Criado 29 de novembro de 2010
Ultima resposta 29 de nov. de 2010
Respostas 7
Participantes 6