O documento apresenta uma trilha sobre Metaprogramação com a API Reflection em Java. Discute conceitos como reflexão, vantagens e desvantagens, e exemplos práticos de uso de métodos como getConstructor, getFields, invoke para manipular classes e objetos dinamicamente.
RECOMENDAÇÃO DE DOCUMENTOS PARA OS USUÁRIOS DO AVA MOODLE A PARTIR DAS HASHTA...
Apresentação Tdc2015 - Trilha Java
1. – Open4education
Trilha – JAVA
Tirando o máximo da Metaprogramação com a API Reflection
Cristiano Agosti
Java Developer
2. – Open4education
Apresentação
• Mestre em Ciência da Computação
• Sócio proprietário da Camtwo Sistemas
(camtwo.com.br)
• Professor na Universidade do Oeste de Santa
Catarina - Unoesc (unoesc.edu.br)
• A mais de 10 anos trabalhando
com Java e web
5. – Open4education
Algumas Perguntas
• Como invocar um método apenas usando seu
nome em uma String?
• Como faço para listar os atributos de uma Classe
dinamicamente?
• Como saber via programação quais são os
Construtores e Métodos da classe?
7. – Open4education
Vantagens
• Descoberta de informações de uma classe em
tempo de execução
• Facilidade na manutenção
• Minimização de Erros
• Ganho de Produtividade
• Padronização
• Extensibilidade
8. – Open4education
Desvantagens
• Redução de desempenho se requerido com frequência
• Problemas por restrição de segurança caso executado em
um ambiente com regras específicas
• Exposição de estrutura interna dos objetos
11. – Open4education
Ponto de Partida
Class<T>
• java.lang.Class<T>
• Classes definem o comportamento de objetos
• Metaclasse definem o comportamento de classes
13. – Open4education
Referência da Class
• Pela Classe
– Class<?> c1 = Pessoa.classe;
• Pelo Nome da Classe
– Class<?> c2 = Class.forName(“br.tdc.Pessoa”);
• Pela Instância
– Pessoa p = new Pessoa();
– Class c3 = p.getClass();
14. – Open4education
O que é metadata
• são dados sobre outros dados
• Um item de um metadado pode dizer do que se
trata aquele dado
• Facilitam o entendimento dos relacionamentos e a
utilidade das informações dos dados
http://pt.wikipedia.org/wiki/Metadados
19. – Open4education
Metadata para Arrays
B para byte
C para char
D para double
F para float
I para int
J para long
Lpacote+classe para classe[]
S para short
Z para boolean
[ para a dimensão do array
29. – Open4education
Anotações
• A interface AnnotatedElement oferece
funcionalidades para obtermos informações de
anotações existentes em classes
• Devem ser herança de ActiveObject como Field e
Method
30. – Open4education
Anotações
• Devem ser herança de ActiveObject como Field e
Method
• Exemplo: criar uma anotação para Validar um
atributo(field) obrigatório