GENERICS JAVA 5: Usar ou não usar?? eis a questão....  XML
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Autor Mensagem
Paulo Silveira
Administrador
[Avatar]

Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline

heitorzim wrote:
Mas usando generics não dá, pois ArrayList<PontoInteiro> não é um ArrayList<Ponto> só pq um PontoInteiro é um Ponto. Tem que deixar de usar os generics.

Isso é um motivo?

Editando: Não, não é motivo pois podemos usar um maravilhoso WildCard no valor de um milhão de reais em barras de ouro que valem mais do que dinheiro.


Pois é. Apenas um void fazAlgo(List<? extends Ponto> pontos) resolve esse seu caso

Generics é 10!

http://blog.caelum.com.br twitter: @paulo_caelum


[Email] [WWW]
marciorodr0
Thread.start()
[Avatar]

Membro desde: 04/08/2008 12:55:16
Mensagens: 49
Localização: Carapicuíba SP
Offline

Comecei a conhecer o Generics há mais ou menos uma semana e acho ótimo... Poupa muito código...

Sun Certified Programmer for the Java 2 Plataform, Standard Edition 5.0 - PASS 97%
Sun Certified Web Component Developer for the Java 2 Plataform, Enterprise Edition 5.0 - PASS 100%
Sun Certified Business Component Developer for the Java Platform, Enterprise Edition 5.0 - PASS 98%
[MSN]
aleck
GUJ Ranger
[Avatar]

Membro desde: 27/03/2006 08:08:33
Mensagens: 843
Localização: Rio de Janeiro
Offline

Muitas vezes não uso pois meus clientes não possuem um ambiente compativel, do contrário não vejo problema.

Desenvolvedor iOS/Android
http://blog.alexandresoli.com.br
@alexandresoli
[WWW] [MSN]
Alan Quelton
Smalltalk
[Avatar]

Membro desde: 02/10/2009 09:20:48
Mensagens: 2
Offline

Vcs tão brincando não é? Nunca pensei que fosse encontrar pessoas discutindo sobre a viabilidade do uso de generics. É como se eu tivesse perguntando: Será que é melhor eu especificar vários metodos declararando todos eles, um por um, para fazerem a mesma coisa, ou declarar apenas um metodo já especificando todos os metodos relacionados? A mesma coisa vale pra classes genericas, ao invés de declarar vários tipos declaro apenas um. Genrerics é o que há pow!
[Email] [MSN]
adriano_si
JWizard
[Avatar]

Membro desde: 01/10/2006 15:29:40
Mensagens: 2047
Offline

Alan Quelton wrote:Vcs tão brincando não é? Nunca pensei que fosse encontrar pessoas discutindo sobre a viabilidade do uso de generics. É como se eu tivesse perguntando: Será que é melhor eu especificar vários metodos declararando todos eles, um por um, para fazerem a mesma coisa, ou declarar apenas um metodo já especificando todos os metodos relacionados? A mesma coisa vale pra classes genericas, ao invés de declarar vários tipos declaro apenas um. Genrerics é o que há pow!


Não cara... já ví gente dizendo que não usa, não usa e não usa... hehehehehehehehe fazer o que ?? Acho que tudo é questão de ambiente, tamanho (sistema e equipe), escalabilidade, de um Sistema...

No mais... realmente não vejo motivos maiores para não usar... só acho que a Moderação foi uma boa palavra usada... para Conjuntos não...pode abusar... para classes, os <? extends Algum> cuidado... porque quando é 1 e apenas 1, é bacana, quando essa lista cresce, pode ser confuso...

Abs
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Alan Quelton wrote:Vcs tão brincando não é? Nunca pensei que fosse encontrar pessoas discutindo sobre a viabilidade do uso de generics. É como se eu tivesse perguntando: Será que é melhor eu especificar vários metodos declararando todos eles, um por um, para fazerem a mesma coisa, ou declarar apenas um metodo já especificando todos os metodos relacionados? A mesma coisa vale pra classes genericas, ao invés de declarar vários tipos declaro apenas um. Genrerics é o que há pow!


Na verdade, os generics não foram feitos com o mesmo intuito dos templates. E nem ajudam no quesito de escrever menos métodos, como os templates fazem. Os generics vieram para restringir os tipos, não permitir que uma classe suporte mais tipos.

Veja, o que tinhamos antes dos genérics é que classes gerais obrigatoriamente deveriam ser de um tipo de objeto alto na hierarquia. Isso implicava em casts, muitas vezes perigosos, pois elas suportavam "tipos demais".

Com os generics é possível restringir isso, e criar uma classe que, apesar de ainda suportar qualquer coisa, possa saber que tipo ela está tratando "naquele momento". E, com isso, limitar o que é ou não incluído em seu interior.


É diferente dos templates, que efetivamente ampliam o sistema de tipos. Nos templates, esquecemos que existem tipos e consideramos como positivo qualquer coisa que tenha uma interface compatível.


PS: Cuidado para não ressuscitar tópicos. Você comentou num tópico do ano passado.

This message was edited 1 time. Last update was at 08/10/2009 10:32:06


@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
[WWW]
moacirjava
Virtual Machine Man
[Avatar]

Membro desde: 11/01/2008 11:31:08
Mensagens: 658
Localização: Minas Gerais
Offline

Pessoal, só para esclarecimento, quando eu coloco um método genérico
a intenção é restringir quem pode utilizar esse método?

Por exemplo, eu tenho a minha super classe e tenho as minhas subclasses
o método abaixo só pode ser usado por quem herdar de Superclasse?

view plaincopy to clipboardprint?


"Para conseguir algo que você nunca teve, precisa fazer algo que nunca fez."

Analista de Sistemas.
SCJP 5


 
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Ir para:   
Powered by JForum 2.1.8 © JForum Team