– Open4education
Trilha – JAVA
Tirando o máximo da Metaprogramação com a API Reflection
Cristiano Agosti
Java Developer
– Open4education
Apresentação
• Mestre em Ciência da Computação
• Sócio proprietário da Camtwo Sistemas
(camtwo.com.br)
• ...
– Open4education
Agenda
• Metaprogramação
• Reflexão, Vantagens e Desvantagens
• API Reflection
• Exemplos
• Conclusões
– Open4education
Metaprogramação
• Consiste na criação de programação com a
capacidade de manipular a estrutura ou dados d...
– Open4education
Algumas Perguntas
• Como invocar um método apenas usando seu
nome em uma String?
• Como faço para listar ...
– Open4education
Reflexão
– Open4education
Vantagens
• Descoberta de informações de uma classe em
tempo de execução
• Facilidade na manutenção
• Min...
– Open4education
Desvantagens
• Redução de desempenho se requerido com frequência
• Problemas por restrição de segurança c...
– Open4education
Quando Usar
• DSL (Linguagem de Domínio Específico)
• Compilador
• Descobrir detalhes de classes
– Open4education
– Open4education
Ponto de Partida
Class<T>
• java.lang.Class<T>
• Classes definem o comportamento de objetos
• Metaclasse ...
– Open4education
Classe Pessoa
– Open4education
Referência da Class
• Pela Classe
– Class<?> c1 = Pessoa.classe;
• Pelo Nome da Classe
– Class<?> c2 = Cl...
– Open4education
O que é metadata
• são dados sobre outros dados
• Um item de um metadado pode dizer do que se
trata aquel...
– Open4education
Principais Métodos
– Open4education
Principais Métodos
– Open4education
Metadata para primitivos
– Open4education
Metadata para Arrays
– Open4education
Metadata para Arrays
B para byte
C para char
D para double
F para float
I para int
J para long
Lpacote+cl...
– Open4education
Constructor
Classe responsável por recuperar as informações
dos Construtores da Classe
– Open4education
Constructor
– Open4education
Fields
• Representa os atributos de classe
• Através dessa classe podemos obter as
informações que querem...
– Open4education
Fields
– Open4education
Exemplo para Fields
– Open4education
Method
Classe responsável pela recuperação de dados
sobre métodos de uma classe
– Open4education
Invocação (invoke)
• Forma dinâmica de chamar métodos
• Método da Classe Method
Object invoke(Object obj,...
– Open4education
invoke()
• Métodos da Classe Pessoa
– Open4education
invoke()
• Métodos da Classe String
– Open4education
Anotações
• A interface AnnotatedElement oferece
funcionalidades para obtermos informações de
anotações e...
– Open4education
Anotações
• Devem ser herança de ActiveObject como Field e
Method
• Exemplo: criar uma anotação para Vali...
– Open4education
Mãos a Obra
– Open4education
Roteiro de Exemplos
• Pessoa
• Listar Construtores (construtor)
• Criar instancia a partir do construtor ...
– Open4education
Exemplo Constructor
– Open4education
Exemplo Fields
– Open4education
Exemplo Method
– Open4education
Exemplo Anotações
– Open4education
Exemplo Anotações
– Open4education
Exemplo Anotações
– Open4education
Lombok
– Open4education
Proxy
• Criar implementação de Interfaces em tempo de
execução
• Forma de interceptar métodos de interfac...
– Open4education
Proxy
– Open4education
Proxy
– Open4education
Proxy
– Open4education
Conclusões
Descoberta de informações sobre classes
Usar com cautela
Extensibilidade
Usado por muitos fram...
– Open4education
Perguntas
– Open4education
Referências
http://wwwusers.di.uniroma1.it/~parisi/Risorse/java-
reflection-explained-simply-manual-8up.p...
– Open4education
Contato
• skype: cristiano.agosti
• twitter: @agosti
• cristiano.agosti@camtwo.com.br
• facebook.com/cris...
Próximos SlideShares
Carregando em…5
×

Apresentação Tdc2015 - Trilha Java

207 visualizações

Publicada em

Apresentação sobre a palestra: Tirando o máximo da Metaprogramação com a API Reflection.
Trilha Java TDC 2015

Publicada em: Software
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
207
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
4
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Apresentação Tdc2015 - Trilha Java

  1. 1. – Open4education Trilha – JAVA Tirando o máximo da Metaprogramação com a API Reflection Cristiano Agosti Java Developer
  2. 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
  3. 3. – Open4education Agenda • Metaprogramação • Reflexão, Vantagens e Desvantagens • API Reflection • Exemplos • Conclusões
  4. 4. – Open4education Metaprogramação • Consiste na criação de programação com a capacidade de manipular a estrutura ou dados de outros programas ou a sim mesmo
  5. 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?
  6. 6. – Open4education Reflexão
  7. 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. 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
  9. 9. – Open4education Quando Usar • DSL (Linguagem de Domínio Específico) • Compilador • Descobrir detalhes de classes
  10. 10. – Open4education
  11. 11. – Open4education Ponto de Partida Class<T> • java.lang.Class<T> • Classes definem o comportamento de objetos • Metaclasse definem o comportamento de classes
  12. 12. – Open4education Classe Pessoa
  13. 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. 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
  15. 15. – Open4education Principais Métodos
  16. 16. – Open4education Principais Métodos
  17. 17. – Open4education Metadata para primitivos
  18. 18. – Open4education Metadata para Arrays
  19. 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
  20. 20. – Open4education Constructor Classe responsável por recuperar as informações dos Construtores da Classe
  21. 21. – Open4education Constructor
  22. 22. – Open4education Fields • Representa os atributos de classe • Através dessa classe podemos obter as informações que queremos sobre os atributos
  23. 23. – Open4education Fields
  24. 24. – Open4education Exemplo para Fields
  25. 25. – Open4education Method Classe responsável pela recuperação de dados sobre métodos de uma classe
  26. 26. – Open4education Invocação (invoke) • Forma dinâmica de chamar métodos • Método da Classe Method Object invoke(Object obj, Object... args)
  27. 27. – Open4education invoke() • Métodos da Classe Pessoa
  28. 28. – Open4education invoke() • Métodos da Classe String
  29. 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. 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
  31. 31. – Open4education Mãos a Obra
  32. 32. – Open4education Roteiro de Exemplos • Pessoa • Listar Construtores (construtor) • Criar instancia a partir do construtor vazio • Criar instancia a partir do construtor de atributos • Listar Atributos (fields) • Listar Métodos (method) • Invocar método mensagem • Anotações (atributo obrigatório) • Validar instancia com atributo preenchido • Validar instancia com atributo nulo
  33. 33. – Open4education Exemplo Constructor
  34. 34. – Open4education Exemplo Fields
  35. 35. – Open4education Exemplo Method
  36. 36. – Open4education Exemplo Anotações
  37. 37. – Open4education Exemplo Anotações
  38. 38. – Open4education Exemplo Anotações
  39. 39. – Open4education Lombok
  40. 40. – Open4education Proxy • Criar implementação de Interfaces em tempo de execução • Forma de interceptar métodos de interfaces
  41. 41. – Open4education Proxy
  42. 42. – Open4education Proxy
  43. 43. – Open4education Proxy
  44. 44. – Open4education Conclusões Descoberta de informações sobre classes Usar com cautela Extensibilidade Usado por muitos frameworks Intuitivo
  45. 45. – Open4education Perguntas
  46. 46. – Open4education Referências http://wwwusers.di.uniroma1.it/~parisi/Risorse/java- reflection-explained-simply-manual-8up.pdf http://tutorials.jenkov.com/java-reflection/dynamic- proxies.html http://rodrigosasaki.com/ https://projectlombok.org
  47. 47. – Open4education Contato • skype: cristiano.agosti • twitter: @agosti • cristiano.agosti@camtwo.com.br • facebook.com/cristiano.agosti • agosti.blog.br

×