Top Banner
– Open4education Trilha – JAVA Tirando o máximo da Metaprogramação com a API Reflection Cristiano Agosti Java Developer
47

Apresentação Tdc2015 - Trilha Java

Jul 21, 2015

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Apresentação Tdc2015 - Trilha Java

– Open4education

Trilha – JAVATirando o máximo da Metaprogramação com a API Reflection

Cristiano AgostiJava Developer

Page 2: Apresentação Tdc2015 - Trilha Java

– 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

Page 3: Apresentação Tdc2015 - Trilha Java

– Open4education

Agenda

• Metaprogramação• Reflexão, Vantagens e Desvantagens• API Reflection• Exemplos• Conclusões

Page 4: Apresentação Tdc2015 - Trilha Java

– Open4education

Metaprogramação

• Consiste na criação de programação com acapacidade de manipular a estrutura ou dados deoutros programas ou a sim mesmo

Page 5: Apresentação Tdc2015 - Trilha Java

– Open4education

Algumas Perguntas

• Como invocar um método apenas usando seunome em uma String?

• Como faço para listar os atributos de uma Classedinamicamente?

• Como saber via programação quais são osConstrutores e Métodos da classe?

Page 6: Apresentação Tdc2015 - Trilha Java

– Open4education

Reflexão

Page 7: Apresentação Tdc2015 - Trilha Java

– Open4education

Vantagens

• Descoberta de informações de uma classe emtempo de execução

• Facilidade na manutenção• Minimização de Erros• Ganho de Produtividade• Padronização• Extensibilidade

Page 8: Apresentação Tdc2015 - Trilha Java

– Open4education

Desvantagens

• Redução de desempenho se requerido com frequência

• Problemas por restrição de segurança caso executado emum ambiente com regras específicas

• Exposição de estrutura interna dos objetos

Page 9: Apresentação Tdc2015 - Trilha Java

– Open4education

Quando Usar

• DSL (Linguagem de Domínio Específico)

• Compilador

• Descobrir detalhes de classes

Page 10: Apresentação Tdc2015 - Trilha Java

– Open4education

Page 11: Apresentação Tdc2015 - Trilha Java

– Open4education

Ponto de Partida

Class<T>

• java.lang.Class<T>• Classes definem o comportamento de objetos• Metaclasse definem o comportamento de classes

Page 12: Apresentação Tdc2015 - Trilha Java

– Open4education

Classe Pessoa

Page 13: Apresentação Tdc2015 - Trilha Java

– 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();

Page 14: Apresentação Tdc2015 - Trilha Java

– Open4education

O que é metadata

• são dados sobre outros dados

• Um item de um metadado pode dizer do que setrata aquele dado

• Facilitam o entendimento dos relacionamentos e autilidade das informações dos dados

http://pt.wikipedia.org/wiki/Metadados

Page 15: Apresentação Tdc2015 - Trilha Java

– Open4education

Principais Métodos

Page 16: Apresentação Tdc2015 - Trilha Java

– Open4education

Principais Métodos

Page 17: Apresentação Tdc2015 - Trilha Java

– Open4education

Metadata para primitivos

Page 18: Apresentação Tdc2015 - Trilha Java

– Open4education

Metadata para Arrays

Page 19: Apresentação Tdc2015 - Trilha Java

– Open4education

Metadata para ArraysB para byte C para char D para doubleF para floatI para intJ para longLpacote+classe para classe[]S para shortZ para boolean[ para a dimensão do array

Page 20: Apresentação Tdc2015 - Trilha Java

– Open4education

Constructor

Classe responsável por recuperar as informaçõesdos Construtores da Classe

Page 21: Apresentação Tdc2015 - Trilha Java

– Open4education

Constructor

Page 22: Apresentação Tdc2015 - Trilha Java

– Open4education

Fields

• Representa os atributos de classe

• Através dessa classe podemos obter asinformações que queremos sobre os atributos

Page 23: Apresentação Tdc2015 - Trilha Java

– Open4education

Fields

Page 24: Apresentação Tdc2015 - Trilha Java

– Open4education

Exemplo para Fields

Page 25: Apresentação Tdc2015 - Trilha Java

– Open4education

Method

Classe responsável pela recuperação de dadossobre métodos de uma classe

Page 26: Apresentação Tdc2015 - Trilha Java

– Open4education

Invocação (invoke)

• Forma dinâmica de chamar métodos

• Método da Classe Method

Object invoke(Object obj, Object... args)

Page 27: Apresentação Tdc2015 - Trilha Java

– Open4education

invoke()

• Métodos da Classe Pessoa

Page 28: Apresentação Tdc2015 - Trilha Java

– Open4education

invoke()

• Métodos da Classe String

Page 29: Apresentação Tdc2015 - Trilha Java

– Open4education

Anotações

• A interface AnnotatedElement oferecefuncionalidades para obtermos informações deanotações existentes em classes

• Devem ser herança de ActiveObject como Field eMethod

Page 30: Apresentação Tdc2015 - Trilha Java

– Open4education

Anotações

• Devem ser herança de ActiveObject como Field eMethod

• Exemplo: criar uma anotação para Validar umatributo(field) obrigatório

Page 31: Apresentação Tdc2015 - Trilha Java

– Open4education

Mãos a Obra

Page 32: Apresentação Tdc2015 - Trilha Java

– 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

Page 33: Apresentação Tdc2015 - Trilha Java

– Open4education

Exemplo Constructor

Page 34: Apresentação Tdc2015 - Trilha Java

– Open4education

Exemplo Fields

Page 35: Apresentação Tdc2015 - Trilha Java

– Open4education

Exemplo Method

Page 36: Apresentação Tdc2015 - Trilha Java

– Open4education

Exemplo Anotações

Page 37: Apresentação Tdc2015 - Trilha Java

– Open4education

Exemplo Anotações

Page 38: Apresentação Tdc2015 - Trilha Java

– Open4education

Exemplo Anotações

Page 39: Apresentação Tdc2015 - Trilha Java

– Open4education

Lombok

Page 40: Apresentação Tdc2015 - Trilha Java

– Open4education

Proxy

• Criar implementação de Interfaces em tempo deexecução

• Forma de interceptar métodos de interfaces

Page 41: Apresentação Tdc2015 - Trilha Java

– Open4education

Proxy

Page 42: Apresentação Tdc2015 - Trilha Java

– Open4education

Proxy

Page 43: Apresentação Tdc2015 - Trilha Java

– Open4education

Proxy

Page 44: Apresentação Tdc2015 - Trilha Java

– Open4education

Conclusões

Descoberta de informações sobre classesUsar com cautelaExtensibilidadeUsado por muitos frameworksIntuitivo

Page 45: Apresentação Tdc2015 - Trilha Java

– Open4education

Perguntas

Page 46: Apresentação Tdc2015 - Trilha Java

– Open4education

Referências

http://wwwusers.di.uniroma1.it/~parisi/Risorse/java-reflection-explained-simply-manual-8up.pdfhttp://tutorials.jenkov.com/java-reflection/dynamic-proxies.htmlhttp://rodrigosasaki.com/https://projectlombok.org

Page 47: Apresentação Tdc2015 - Trilha Java

– Open4education

Contato

• skype: cristiano.agosti• twitter: @agosti• [email protected]• facebook.com/cristiano.agosti• agosti.blog.br