| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2011 18:31:44
|
lina
Moderador
![[Avatar]](/images/avatar/8849f0a976aa5332853e848655a1d28f.jpg)
Membro desde: 23/12/2006 21:05:04
Mensagens: 3083
Offline
|
Oi,
Acabo de receber e ler o topico relacionado a reflexao da nova edicao da revista MundoJava.
Primeiramente gostaria de parabenizar o autor Ricardo, que encontrou uma maneira simples de explicar um assunto complexo como este.
Porem, no topico "Vantagens e Desvantagens" deixou um ar de "Putz, li toda a materia para ver no final que so existem desvantagens se utilizar reflexao..."
Entao fica a pergunta: Depois de tantas desvatagens, quando usar reflexao se torna realmente util? Se existir uma solucao nao-reflexiva, devo ou nao utiliza-la?
Obs: sim, uso reflexao no meu dia-a-dia. Criei esse espaco para apresentar vantagens no seu uso e para que os javeiros iniciantes possam conhecer melhor essa "ferramenta".
Tchauzin!
This message was edited 1 time. Last update was at 25/03/2011 08:11:29
|
Você é novo no GUJ? Vai criar um tópico e colar seu código-fonte? Leia aqui antes, por favor!
http://www.guj.com.br/posts/list/50115.java
Se o seu tópico foi respondido e você está satisfeito, segue:
- Pressione o botão <Edit> de seu primeiro post
- Acrescente no final do título a tag [RESOLVIDO]
@gujgirl
http://www.restartfans.hdfree.com.br
Meu blog:
http://www.runthecode.wordpress.com
Tchauzin! |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2011 18:39:29
|
rwolosker
Debugger
Membro desde: 09/05/2009 21:56:46
Mensagens: 56
Localização: Rio de Janeiro
Offline
|
vantagem e desvantagem sobre Java Reflection é o tipo da coisa que não tem o que discutir! Mesmo que seja uma contradição.
Experimente retirar reflexão de qualquer framework? Vai sobrar pouca coisa, se sobrar!!
|
Ricardo Wolosker |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2011 19:13:33
|
Gustavo Sperandio
JavaChild
![[Avatar]](/images/avatar/2c6d7f23f661010f5b0c2fa53517c29d.jpg)
Membro desde: 21/03/2011 15:01:55
Mensagens: 107
Offline
|
Desculpa por minha inexperiência, mas vocês podem me falar um pouco sobre esse assunto?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2011 20:20:49
|
Kanin Dragon
Virtual Machine Man
![[Avatar]](/images/avatar/74f303673bc7765b1bd3fea078d185b5.jpg)
Membro desde: 01/02/2011 12:46:04
Mensagens: 682
Localização: Depende
Offline
|
rwolosker wrote:vantagem e desvantagem sobre Java Reflection é o tipo da coisa que não tem o que discutir! Mesmo que seja uma contradição.
Experimente retirar reflexão de qualquer framework? Vai sobrar pouca coisa, se sobrar!!
rwolosker,
Você disse tudo, a grande maioria dos frameworks utilizam reflection, inclusive desenvolvi um framework para uma empresa de grande porte utilizando reflection em boa parte do código.
Reflection e um recurso muito util, mas deve ser tratado com muito cuidado devido a questões de performance.
|
http://www.guj.com.br/java/244602-calunia-desabafo
Dragão Torpente
Shidoshi Ninjutsu
Engenharia Eletrônica - ITA
Mestrado Engenharia Eletrica - UFRJ
Futuramente Doutorado - Harvard
SCJP 5
SCWCD 5
SCJD
SCBCD
SCDJWS
SCEA
Não respondo dúvidas via MP. Não seja egoista e abra um tópico.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2011 20:38:12
|
rwolosker
Debugger
Membro desde: 09/05/2009 21:56:46
Mensagens: 56
Localização: Rio de Janeiro
Offline
|
Você pode utilizar Reflection para fazer generalizações.
Exemplo
E se você precisa de um método para pegar o atributo nome de um objeto? Mas qualquer objeto?
Você não vai construir um método para cada tipo de objeto? Imagina só que muguéia que vai ficar? Então você pode construir um método genérico para retornar o atributo nome de qualquer objeto.
os métodos getNomeDireto e getNomeViaMetodo aceitam como parâmetro qualquer tipo de Objeto, você pode passar um objeto do tipo Livro ou um Objeto do tipo Autor.
|
Ricardo Wolosker |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2011 21:14:34
|
Marky.Vasconcelos
Moderador
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.png)
Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline
|
Reflexão se torna util quando se quiser fazer algo generico.
Tenta fazer um Hibernate ou então o ObjectTableModel que fiz, sem usar reflexão.
This message was edited 1 time. Last update was at 21/03/2011 21:14:46
|
Facebook @MarkyHitchhiker +Mark WP: MarkyTech's
Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais
DefaultTableModel?! PARE! Não faça isso! Faça melhor!
Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)
Develop games is fantastic, with words you can make worlds!!!
DON'T PANIC!
MarkyHitchhiker's Blog! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/03/2011 21:58:26
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline
|
Eu trocaria o termo "vantagem" para "necessidade".
Pense no JavaEE sem reflection: ele simplesmente não existiria porque tudo é reflection dentro dele, vide chamadas EJBs.
|
http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/03/2011 07:19:22
|
lina
Moderador
![[Avatar]](/images/avatar/8849f0a976aa5332853e848655a1d28f.jpg)
Membro desde: 23/12/2006 21:05:04
Mensagens: 3083
Offline
|
Oi,
Todos estão corretos. A matéria da revista está excelente, porém se alterasse a ordem e colocasse este ultimo tópico ("Desvantagens e Vantagens") no inicio, eu não leria nem metade do que eu li.
Minha pergunta que não foi respondida: Se existir uma solução não-reflexiva, devo optar por usar reflexão? Isso não tornaria mais lento?
Tchauzin!
|
Você é novo no GUJ? Vai criar um tópico e colar seu código-fonte? Leia aqui antes, por favor!
http://www.guj.com.br/posts/list/50115.java
Se o seu tópico foi respondido e você está satisfeito, segue:
- Pressione o botão <Edit> de seu primeiro post
- Acrescente no final do título a tag [RESOLVIDO]
@gujgirl
http://www.restartfans.hdfree.com.br
Meu blog:
http://www.runthecode.wordpress.com
Tchauzin! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/03/2011 09:23:35
|
Guerr@
Virtual Machine Man
![[Avatar]](/images/avatar/9fb640ea6abe0e849c8c1fd6eea97c22.jpg)
Membro desde: 03/12/2006 10:32:50
Mensagens: 520
Offline
|
Olá Lina!
A verdade é que essa não é uma pergunta fácil de responder e vai depender de cada caso... É importante que quem utiliza reflexão entenda as consequências positivas e negativas para poder valiar seu uso em cada caso.
Por exemplo, imagine que você crie um Comparator genérico usado para ordenar uma lista por uma das propriedades do objeto que utiliza reflexão para cessar o valor dessa propriedade. Se sua lista for da ordem de dezenas, provavelmente o uso de reflexão não causará muito impacto. Se for da ordem de dezenas de milhares provavelmente sim.
De qualquer forma nunca é aconselhável tentar otimizar código prematuramente. Crie sua solução e se não atender os requisitos de desempenho, faça o profiling e veja onde está o gargalo.
[]s
|
Eduardo Guerra - "É Java na ponta do dedo!"
Desenvolvedor de Frameworks - Pesquisador
Editor Chefe - Revista MundoJ
Professor - Instituto Tecnológico de Aeronáutica
Me siga no Twiter!!! http://twitter.com/emguerra |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/03/2011 10:39:34
|
lina
Moderador
![[Avatar]](/images/avatar/8849f0a976aa5332853e848655a1d28f.jpg)
Membro desde: 23/12/2006 21:05:04
Mensagens: 3083
Offline
|
Guerr@ wrote:Olá Lina!
A verdade é que essa não é uma pergunta fácil de responder e vai depender de cada caso... É importante que quem utiliza reflexão entenda as consequências positivas e negativas para poder valiar seu uso em cada caso.
Por exemplo, imagine que você crie um Comparator genérico usado para ordenar uma lista por uma das propriedades do objeto que utiliza reflexão para cessar o valor dessa propriedade. Se sua lista for da ordem de dezenas, provavelmente o uso de reflexão não causará muito impacto. Se for da ordem de dezenas de milhares provavelmente sim.
De qualquer forma nunca é aconselhável tentar otimizar código prematuramente. Crie sua solução e se não atender os requisitos de desempenho, faça o profiling e veja onde está o gargalo.
[]s
Oi,
Perfeito exemplo Eduardo. Era exatamente isso que queria mostrar para os javeiros iniciantes.
Até porque, estudando reflexão você se aprofundará mais e conhecerá um pouco melhor sobre a linguagem Java.
Parabéns pela edição. Realmente da um curso de engenharia de software!
Tchauzin!
|
Você é novo no GUJ? Vai criar um tópico e colar seu código-fonte? Leia aqui antes, por favor!
http://www.guj.com.br/posts/list/50115.java
Se o seu tópico foi respondido e você está satisfeito, segue:
- Pressione o botão <Edit> de seu primeiro post
- Acrescente no final do título a tag [RESOLVIDO]
@gujgirl
http://www.restartfans.hdfree.com.br
Meu blog:
http://www.runthecode.wordpress.com
Tchauzin! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/03/2011 10:40:18
|
Marky.Vasconcelos
Moderador
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.png)
Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline
|
Guerr@ wrote:Olá Lina!
De qualquer forma nunca é aconselhável tentar otimizar código prematuramente. Crie sua solução e se não atender os requisitos de desempenho, faça o profiling e veja onde está o gargalo.
Apoiado.
Os passos para uma boa programação:
1° Faça um teste que falhe.
2° Faça o teste funcionar.
3° Refatore.
4° Deixe rapido.
|
Facebook @MarkyHitchhiker +Mark WP: MarkyTech's
Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais
DefaultTableModel?! PARE! Não faça isso! Faça melhor!
Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)
Develop games is fantastic, with words you can make worlds!!!
DON'T PANIC!
MarkyHitchhiker's Blog! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/03/2011 20:17:03
|
Guerr@
Virtual Machine Man
![[Avatar]](/images/avatar/9fb640ea6abe0e849c8c1fd6eea97c22.jpg)
Membro desde: 03/12/2006 10:32:50
Mensagens: 520
Offline
|
Quando vi reflexão pela primeira vez minha reação foi tipo "Vale fazer isso?"
Percebi que com isso poderia usar minha criatividade para criar componentes mais genéricos e reutilizáveis.
Acho que é algo que vale a pena todo desenvolvedor aprender!
|
Eduardo Guerra - "É Java na ponta do dedo!"
Desenvolvedor de Frameworks - Pesquisador
Editor Chefe - Revista MundoJ
Professor - Instituto Tecnológico de Aeronáutica
Me siga no Twiter!!! http://twitter.com/emguerra |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2011 07:04:25
|
rlinden
Smalltalk
Membro desde: 23/03/2011 06:57:28
Mensagens: 2
Offline
|
Eu concordo integralmente com o Eduardo. A reflexão é útil quando necessitamos fazer algo genérico - sem ela, fica impossível desenvolver um framework, por exemplo.
Ademais, eu gosto muito de utilizar os bons princípios de programação em todos os projetos que faço. Assim, por exemplo, todos os meus DAOs são na realidade facades e a sua instanciação é feita através de reflexão, onde a classe é um parâmetro do projeto. Isto tem custo zero no desenvolvimento e pode facilitar minha vida em um futuro não muito distante.
Outro ponto fundamental sobre a reflexão é que quem efetivamente a conhece tem um domínio muito maior sobre a linugagem Java como um todo. Assim, aprendê-la gera um efeito colateral excelente: a melhoria do seu estilo e da qualidade do produto que você gera.
Espero ter colocado mais vantagens para deixá-la com mais vontade de usar reflexão no futuro.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2011 07:21:16
|
Baratao
JavaBaby
![[Avatar]](/images/avatar/33d81348225fe436802063fc73e6f2c5.jpg)
Membro desde: 21/07/2008 03:18:19
Mensagens: 84
Offline
|
Li o artigo e gostei muito do assunto.
Agora estou procurando um livro que sobre reflection.
Vi que existe o Java Reflection in Action porém não conseguir achar em livrarias aqui do Brasil.
Alguém sabe alguma livraria aqui no Brasil que tenha esse ou algum outro livro do mesmo assunto a venda??
Obrigado
|
Tentando aprender sozinhu.....
Até que está funcionando... vamos ver até quando....
HaVe a NiCe DaY!.!.! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2011 07:34:26
|
rlinden
Smalltalk
Membro desde: 23/03/2011 06:57:28
Mensagens: 2
Offline
|
O livro Java Reflection in Action pode ser encontrado facilmente para download. Como é ilegal, eu não vou sugerir oficialmente que você faça isto, mas o site flazx (http://www.flazx.us/series/17-In-Action) contém algo que pode interessar que quiser seguir por este caminho.
Do lado legal, eu sugiro que vocês baixem o software do Kindle e procurem por livros nestea loja. Eu ouvi falar bem do livro "Hardcore Java", mas não o vi pessoalmente. A Amazon permite que você veja o índice, o que pode lhe ajudar.
Quem sabe este tipo de mensagem não me estimula a escrever um livro completo sobre o assunto?
|
|
|
 |
|
|