Forum Main Page > Java Básico

O que é Reflection ?

Goto page 1

New Topic    Reply Message
  1. Comment Arrow




  1. GMaia
    Offline
    Posts: 1

    Comment Arrow

    Publicado em: 10/04/2009 05:18:44

    Alguém sabe o que é e para que serve?

    valeu




  1. jack_-_ganzha
    Offline
    Posts: 4134

    Comment Arrow

    Publicado em: 10/04/2009 05:18:44

    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)




  1. domingosbernardo
    Offline
    Posts: 34

    Comment Arrow

    Publicado em: 10/04/2009 05:18:44

    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




  1. Bruno Barauskas
    Offline
    Posts: 24

    Comment Arrow

    Publicado em: 10/04/2009 05:18:44

    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!




  1. staroski
    Offline
    Posts: 2087

    Comment Arrow

    Publicado em: 10/04/2009 05:18:44

    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




  1. Bruno Barauskas
    Offline
    Posts: 24

    Comment Arrow

    Publicado em: 10/04/2009 05:18:44

    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!




  1. Relacionados




  1. Anunciante





New Topic    Reply Message     Forum Main Page -> Java Básico


Goto page 1