| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2009 12:36:13
|
javando
JavaEvangelist
Membro desde: 04/12/2006 15:42:08
Mensagens: 409
Offline
|
gente, qual é o problema desse código?:
o código abaixio , mesma coisa:
o pior, é que na hora que eu faço a atribuiçao , não da erro, só da erro na hora de inserir..
q q eu faço? rsrs
|
Antonio Rafael Rodrigues
SCJP
SCWCD
SCBCD
site: http://www.antoniorafael.eti.br |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2009 12:39:17
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Uma PriorityQueue<E> só deixa inserir (ou seja, "offer") elementos da classe E, ou de alguma classe que estenda E.
Isso é para evitar que a PriorityQueue deixe de ser uma PriorityQueue de E ao conter elementos de outras classes que não sejam E ou que não estendam E.
Como E == String, e não existe nenhuma classe que possa estender String porque ela é uma "final class", então no seu caso você só pode declarar PriorityQueue <String> e nada mais.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2009 12:52:03
|
javando
JavaEvangelist
Membro desde: 04/12/2006 15:42:08
Mensagens: 409
Offline
|
mas no caso que eu disse <? extends String> ele deveria aceitar alem das "filhas" de string, tambem a propria string não é?
ele não aceita nem a propria string
|
Antonio Rafael Rodrigues
SCJP
SCWCD
SCBCD
site: http://www.antoniorafael.eti.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2009 13:11:42
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Você pôs <? extends Object>. Ponha <? extends String> , teste e veja se dá o mesmo resultado.
Dica: acho que deveria ser <? super String>
This message was edited 1 time. Last update was at 02/02/2009 13:12:05
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2009 13:24:12
|
Vini Fernandes
Virtual Machine Man
![[Avatar]](/images/avatar/84cd1f88d088c3a15254f37a22f6e5d6.jpg)
Membro desde: 20/01/2009 08:43:02
Mensagens: 523
Offline
|
Caro javando, voce esta enganado, pois basta fazer j.offer(new Object()); e vc vera o mesmo erro de compilacao. Veja o codigo abaixo;
O fato é que o wildcard "?" nao nos habilita a fazer
pois estamos falando de generics e animais é uma referencia que aponta para um generic do tipo Cao, mas animais NAO é do tipo Cao, por isso quando tentamos adicionar um novo elemento a lista obtemos um erro de compilacao!!! A utilidade esta no codigo acima como exemplo. Voces podem ver que se retirarmos o wildcard na declaracao do metodo alimentarAnimais() nao podemos alimetar todos os animais de uma unica vez. Imagine se alguem aqui fosse dono de um Petshop!!!
Abracao
|
What do you know about Java? Help me! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2009 14:11:16
|
javando
JavaEvangelist
Membro desde: 04/12/2006 15:42:08
Mensagens: 409
Offline
|
aiai
orbigado pelas respostas ate o moment ...
cara .. quanto mais entendo .. mais me confundo ahua
eu to fazendo uma leitura errada então ...
se <? extends Animal> ... eu ACHAVA que dizia assim: posso colocar aki dentro qualquer coisa que extenda Animal..
mas pelo visto eu estou errrad ...
se não é assim, como devo interpretar a clausula <? extends Animal>
( naquele exemplo que eu dei, funcionou com o super String,mas porque não com o extends string?)
|
Antonio Rafael Rodrigues
SCJP
SCWCD
SCBCD
site: http://www.antoniorafael.eti.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2009 14:57:18
|
Vini Fernandes
Virtual Machine Man
![[Avatar]](/images/avatar/84cd1f88d088c3a15254f37a22f6e5d6.jpg)
Membro desde: 20/01/2009 08:43:02
Mensagens: 523
Offline
|
Imagine o seguinte: Jaula<Leao> jaulaLeao = new Jaula<Leao> (); e Jaula<Borboleta> jaulaBorboleta= new Jaula<Borboleta> (); e voce fizesse jaulaLeao.add(new Borboleta()); É claro que as borboletas iriam escapar da jaula dos leoes.....rsrsr...... e por isso voce tem um erro de compilacao quando realiza a atribuicao jaulaLeao = jaulaBorboleta;
Quando fazemos Jaula<? extends Anima> jaula = jaulaLeao; voce diz ao compilador que jaula é uma referencia que apontara para qualquer GENERIC cujos elementos sejam subtipos de Animal. Mas imagine o problema que voce teria se fizesse: jaula.add(new Leao()) e depois jaula.add(new Zebra());.....kkkkkkkk
Abracao
|
What do you know about Java? Help me! |
|
|
 |
|
|