| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/08/2010 15:12:42
|
bestlinux
JavaEvangelist
![[Avatar]](/images/avatar/7cfe973cfd3353ecacc3ec1e53a1c5ea.jpg)
Membro desde: 30/06/2008 13:18:23
Mensagens: 359
Offline
|
Pessoa,
Alguém poderia me explicar o sentido de criar um atributo assim:
E como eu poderia usa-lo ?
Obrigado !
|
http://www.bestlinux.com.br |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/08/2010 15:28:43
|
Ataxexe
JavaEvangelist
![[Avatar]](/images/avatar/8ed02495f7499c010a3b22c830438ec2.jpg)
Membro desde: 11/10/2007 15:34:17
Mensagens: 418
Localização: Brasília
Offline
|
O "?" funciona como um curinga. Ele diz que pode ser qualquer tipo e pode ser usado em conjunto com "extends" ou "super". Com extends, será aceito qualquer tipo que herde o informado (<? extends Number> irá aceitar <Integer>, <Double>, etc.). Com super, será aceito qualquer superclasse ou interface do informado (<? super Method> irá aceitar <Member>, <AccessibleObject>, <AnnotatedElement>, etc.). Usar somente o "?" é o mesmo que usar "? extends Object". Criar um atributo com o "?" significa dizer que você não sabe ao certo o tipo dos elementos da lista. É quase o mesmo que declarar somente List (quase o mesmo porque há casos de erros de compilação chatos caso use o "?").
This message was edited 2 times. Last update was at 09/08/2010 15:29:49
|
Marcelo Guimarães
https://github.com/ataxexe
http://sourceforge.net/projects/trugger
http://www.youtube.com/user/ataxexe
http://www.flickr.com/photos/ataxexe |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/08/2010 15:50:20
|
bestlinux
JavaEvangelist
![[Avatar]](/images/avatar/7cfe973cfd3353ecacc3ec1e53a1c5ea.jpg)
Membro desde: 30/06/2008 13:18:23
Mensagens: 359
Offline
|
Ataxexe wrote:O "?" funciona como um curinga. Ele diz que pode ser qualquer tipo e pode ser usado em conjunto com "extends" ou "super".
Com extends, será aceito qualquer tipo que herde o informado (<? extends Number> irá aceitar <Integer>, <Double>, etc.).
Com super, será aceito qualquer superclasse ou interface do informado (<? super Method> irá aceitar <Member>, <AccessibleObject>, <AnnotatedElement>, etc.).
Usar somente o "?" é o mesmo que usar "? extends Object".
Criar um atributo com o "?" significa dizer que você não sabe ao certo o tipo dos elementos da lista. É quase o mesmo que declarar somente List (quase o mesmo porque há casos de erros de compilação chatos caso use o "?").
Pode colocar um exemplo de uso, por favor.
|
http://www.bestlinux.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/08/2010 16:00:09
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Não há sentido nenhum em criar um atributo assim. Há sentido em criar métodos que recebam parâmetros desse tipo. Por exemplo: Isso aceita como entrada uma List<String> ou uma List<SuaClasse>. O ? indica que tanto faz o tipo da lista. Você ainda poderia restringir. Por exemplo: Esse método aceita qualquer um List<Carro> ou um List de um tipo filho de carro, como um List<Fusca> no primeiro parâmetro. E no segundo, aceita um comparador de Carro ou de qualquer classe que seja pai de carro, como Comparator<<Veiculo>>.
This message was edited 1 time. Last update was at 09/08/2010 16:00:41
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
|
|