Sabe interpretar isso? ->public static <T extends Comparable<? super T>> void sort(List<T> list)  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
andredecotia
JWizard
[Avatar]

Membro desde: 19/10/2009 14:37:32
Mensagens: 2267
Localização: São Paulo
Offline

Alguém pelo amor de Deus consegue me ajudar a entender uma assinatura desta maneira:



Sei que está por trás o conceito de Método Genérico, certo?

Abração a todos.
André AS

--
André AS


Analista Programador Java Web freelancer / home office
Linkedin: http://www.linkedin.com/profile/view?id=41470291&trk=tab_pro

[Email] [MSN] [ICQ]
nel
JWizard
[Avatar]

Membro desde: 01/10/2009 13:51:10
Mensagens: 2364
Offline

Aceita uma lista de qualquer tipo de Objeto e retorna um objeto que extenda comparable, sendo que este comparable aceita qualquer Objeto pai de T.
Sim, trata-se de generico, mas me responda, está trabalhando com isto ou foi a título de curiosidade?

P.s: verifique a questão de ? super T, vale a pena.

Abraços.

"Se houver a terceira guerra mundial eu não sei como será mas a quarta será com paus e pedras" Albert Einsten.
Leonardo3001
GUJ Ranger

Membro desde: 04/07/2007 18:28:58
Mensagens: 975
Offline

nel wrote:Aceita uma lista de qualquer tipo de Objeto e retorna um objeto que extenda comparable, sendo que este comparable aceita qualquer Objeto pai de T.
Sim, trata-se de generico, mas me responda, está trabalhando com isto ou foi a título de curiosidade?

P.s: verifique a questão de ? super T, vale a pena.

Abraços.


Err... não. O retorno é void.

A parte <T extends Comparable<? super T>> apenas restringe o tipo genérico que é aceitável.

Quando digo <T extends Comparable>, quero dizer que o parâmetro genético T pode ser de qualquer tipo, deste que implemente a interface Comparable (caso contrário, é erro de compilação).

Camparable também possui um tipo genérico, por isso também é "generificado" na declaração acima. A expressão <? super T> quer dizer: o Comparable pode ser de qualquer tipo T ou qualquer classe pai de T ou qualquer interface que T implemente. É mais fácil de explicar com um exemplo.

Suponha uma classe chamada Animal:



A classe Gato pode ser usado no método sort



porque implementa Comparable, cujo tipo genérico é o mesmo da classe.

A classe Cachorro também pode ser usado



porque implementa Comparable, cujo tipo genérico não é o mesmo da classe, mas é supertipo da classe.

Agora a classe Iguana não pode ser usado



porque, apesar de implementar Comparable, seu tipo genérico não tem relação de supertipo com a classe Iguana.


Espero que tenha sido claro.

Leonardo Veríssimo
-------------------------------------------------
Objectzilla
[WWW]
nel
JWizard
[Avatar]

Membro desde: 01/10/2009 13:51:10
Mensagens: 2364
Offline

Ops...não vi o "void" ao lado do método.
Foi explicado com maiores detalhes, mas se quiser, aqui tem algo sobre Generics.

Obrigado pela correção

"Se houver a terceira guerra mundial eu não sei como será mas a quarta será com paus e pedras" Albert Einsten.
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team