Seja bem vindo ao Fórum do JavaFree.org
Aqui você irá encontrar respostas para TUDO o que você precisa sobre java.
Deseja participar? Crie sua conta ou efetue seu login
Reflection é uma maneira de se descobrir dados de uma classe/objeto/interface em tempo de execução. Não é uma das ferramentas mais comuns de Java - ao menos para quem está começando - mas é util pra caramba!
JDBC por exemplo, se vale de Reflection para carregar a classe do driver:
valeuz...
_________________
Marcos Silva Pereira http://marcospereira.wordpress.com Any fool can write code that a computer can understand. Good programmers write code that humans can understand. (Fowler)
Existe um otimo exemplo para se aprender como utilizar o conceito de Reflection em Java. No livro CoreJava 7 edição, capitulo 5, pg 110 e 111, é demonstrado um programa que mostra como funciona o Reflection, o programa é muito bom, porque depois de digitado pode ser utilizado como uma ferramenta para se estudar java, porque o programa permite que voce no prompt digite um nome de uma classe qualquer, e o programa retorna os construtores, atributos e metodos referente a mesma classe. É muito util para comparar programas com classes internas e com classes anonimas. Com isso é possivel se verificar qual é mais eficiente ou se existem diferenças entre ambos
_________________
Domingos Bernardo
Muito bacana esse negócio... bem, estou desenvolvendo uma aplicação que gera um documento, podendo ele ser um PDF (boiada) ou um preenchimento de planilha modelo em excel... Se for um pdf, vai seguir um padrão pré-estabelecido, agora se for uma planilha em excel, a forma, linhas, colunas e informações serão tratadas de forma completamente diferentes... Sendo assim, criei uma interface para estabelecer "um contrato" e saber quais métodos poderei chamar pelo objeto e implementarei essas interfaces em classes que serão carregadas pelo reflection, na hora de gerar a planilha escolhida pois o final será sempre o mesmo (a planilha) mas os meios serão muito diferentes, incluindo endereço do modelo e tudo o mais...
Dei uma lida na documentação que nosso brother Jack colocou o link... só uma observação que me deixou triste, na verdade três:
- Queda considerável de performance, pois a JVM não consegue executar a otimização automática para essas classes, então para sistemas de performance crítica, esquece
- Problemas de segurança... o API reflection precisa de acesso ao runtime de uma forma que níveis de segurança mais rígidos não permitiriam, por exemplo, applets, ou seja, se for aplicação web, esquece tb...
- Portabilidade... pode rolar problemas de portabilidade segundo a documentação...
Porém ainda assim é válido considerar o seu uso, porque permite coisas que seriam impossíveis de outra forma... eu venho do Delphi e não conheci nenhuma forma de fazer isso em Delphi... pelo menos EU não conheci...
Grande abraço a todos!
_________________
------------------------------------------------------- Se a inteligência sozinha, sem esforço e paixão, fosse suficiente para trazer as respostas, Einstein teria descoberto a teoria da relatividade aos 10 anos...
Visite - http://www.javabased.wordpress.com - Meus pensamentos implementados em Java!
Quanto a otimização na carga de classes pelo Class.forName, você pode criar uma especialização do ClassLoader, não é uma tarefa tão difícil como parece...
_________________ Ricardo Artur Staroski Blumenau - SC
Eu estou estudando isso agora, comecei a usar Java a pouco tempo, suo newbie ainda... O que eu deveria sobrepor nessa especialização?
Abraço
_________________
------------------------------------------------------- Se a inteligência sozinha, sem esforço e paixão, fosse suficiente para trazer as respostas, Einstein teria descoberto a teoria da relatividade aos 10 anos...
Visite - http://www.javabased.wordpress.com - Meus pensamentos implementados em Java!
Anunciante
GMaia Offline
Posts: 1
Alguém sabe o que é e para que serve?
valeu
jack_-_ganzha Offline
Posts: 4134
Reflection é uma maneira de se descobrir dados de uma classe/objeto/interface em tempo de execução. Não é uma das ferramentas mais comuns de Java - ao menos para quem está começando - mas é util pra caramba!
JDBC por exemplo, se vale de Reflection para carregar a classe do driver:
Vc pode encontrar mais informações sobre reflection aqui:
http://java.sun.com/docs/books/tutorial/reflect/index.html
valeuz...
_________________
Marcos Silva Pereira
http://marcospereira.wordpress.com
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. (Fowler)
domingosbernardo Offline
Posts: 34
Existe um otimo exemplo para se aprender como utilizar o conceito de Reflection em Java. No livro CoreJava 7 edição, capitulo 5, pg 110 e 111, é demonstrado um programa que mostra como funciona o Reflection, o programa é muito bom, porque depois de digitado pode ser utilizado como uma ferramenta para se estudar java, porque o programa permite que voce no prompt digite um nome de uma classe qualquer, e o programa retorna os construtores, atributos e metodos referente a mesma classe.
É muito util para comparar programas com classes internas e com classes anonimas. Com isso é possivel se verificar qual é mais eficiente ou se existem diferenças entre ambos
_________________
Domingos Bernardo
Bruno Barauskas Offline
Posts: 24
Muito bacana esse negócio... bem, estou desenvolvendo uma aplicação que gera um documento, podendo ele ser um PDF (boiada) ou um preenchimento de planilha modelo em excel...
Se for um pdf, vai seguir um padrão pré-estabelecido, agora se for uma planilha em excel, a forma, linhas, colunas e informações serão tratadas de forma completamente diferentes...
Sendo assim, criei uma interface para estabelecer "um contrato" e saber quais métodos poderei chamar pelo objeto e implementarei essas interfaces em classes que serão carregadas pelo reflection, na hora de gerar a planilha escolhida pois o final será sempre o mesmo (a planilha) mas os meios serão muito diferentes, incluindo endereço do modelo e tudo o mais...
Dei uma lida na documentação que nosso brother Jack colocou o link... só uma observação que me deixou triste, na verdade três:
- Queda considerável de performance, pois a JVM não consegue executar a otimização automática para essas classes, então para sistemas de performance crítica, esquece
- Problemas de segurança... o API reflection precisa de acesso ao runtime de uma forma que níveis de segurança mais rígidos não permitiriam, por exemplo, applets, ou seja, se for aplicação web, esquece tb...
- Portabilidade... pode rolar problemas de portabilidade segundo a documentação...
Porém ainda assim é válido considerar o seu uso, porque permite coisas que seriam impossíveis de outra forma... eu venho do Delphi e não conheci nenhuma forma de fazer isso em Delphi... pelo menos EU não conheci...
Grande abraço a todos!
_________________
-------------------------------------------------------
Se a inteligência sozinha, sem esforço e paixão, fosse suficiente para trazer as respostas, Einstein teria descoberto a teoria da relatividade aos 10 anos...
Visite - http://www.javabased.wordpress.com - Meus pensamentos implementados em Java!
staroski Offline
Posts: 2087
Quanto a otimização na carga de classes pelo Class.forName, você pode criar uma especialização do ClassLoader, não é uma tarefa tão difícil como parece...
_________________
Ricardo Artur Staroski
Blumenau - SC
Convenções de código Java
Especificação das API's do Java:
- Standard Edition (SE)
- Enterprise Edition (EE)
- Micro Edition (CLDC, MIDP, CDC, FP, PBP, PP)
Visite também:
- Totall Sistemas
- Cechinel Tecnologia
- Instituto YuDai de Culturas Orientais
Bruno Barauskas Offline
Posts: 24
Eu estou estudando isso agora, comecei a usar Java a pouco tempo, suo newbie ainda...
O que eu deveria sobrepor nessa especialização?
Abraço
_________________
-------------------------------------------------------
Se a inteligência sozinha, sem esforço e paixão, fosse suficiente para trazer as respostas, Einstein teria descoberto a teoria da relatividade aos 10 anos...
Visite - http://www.javabased.wordpress.com - Meus pensamentos implementados em Java!
Relacionados
Reflection... http://javafree.uol.com.br/topic-3111-Reflection.html Construtor privado? http://javafree.uol.com.br/topic-1160-Construtor-privado.html JSTL é vantajoso usar??? http://javafree.uol.com.br/topic-13813-JSTL-e-vantajoso-usar.html Hibernate Exception http://javafree.uol.com.br/topic-9054-Hibernate-Exception.html Método toXml() http://javafree.uol.com.br/topic-850684-Metodo-toXml.html instanciar uma classe passando como referência o nome dela! http://javafree.uol.com.br/topic-4460-instanciar-uma-classe-passando-como-referencia-o-nome-dela.html Table x Collection x Hibernate (Criteria) http://javafree.uol.com.br/topic-6118-Table-x-Collection-x-Hibernate-Criteria.html Campos de uma classe http://javafree.uol.com.br/topic-848866-Campos-de-uma-classe.html Reflection x J2ME http://javafree.uol.com.br/topic-853353-Reflection-x-J2ME.html
Anunciante