Componentes Reutilizaveis em Java Com Reflexoes e Anotacoes Casa do Codigo
Sumário
Sumário
Conceitos Básicos
1
1
Conhecendo a Reflexão
3
1.1
Ainda falta alguma coisa na orientação a objetos? . . . . . . . . . . . .
5
1.2
Reflexão, muito prazer! . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
1.3
O primeiro contato com a API Reflection . . . . . . . . . . . . . . . . 12
1.4
Usar reflexão tem um preço? . . . . . . . . . . . . . . . . . . . . . . . . 18
1.5
Considerações finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2
3
Java Reflection API
25
2.1
Obtendo informações sobre as classes . . . . . . . . . . . . . . . . . . . 26
2.2
Trabalhando com classes . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3
Manipulando objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.4
Procurando métodos e atributos para validação . . . . . . . . . . . . . 50
2.5
Coisas que podem dar errado . . . . . . . . . . . . . . . . . . . . . . . 53
2.6
Considerações finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Metadados e Anotações
57
3.1
Definição de metadados . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.2
Criando anotações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.3
Lendo anotações em tempo de execução . . . . . . . . . . . . . . . . . 74
3.4
Limitações das anotações . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.5
Mapeando parâmetros de linha de comando para uma classe . . . . . 80
3.6
Considerações finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 i Casa do Código
Sumário
4 Proxy Dinâmico
4.1 O que é um proxy? . . . . . . . . . . . . . . .
4.2 Proxy dinâmico com a API Reflection . . .
4.3 Gerando a implementação de uma interface
4.4 Proxy de classes com CGLib . . . . . . . . .
4.5 Consumindo anotações em proxies . . . . .
4.6 Outras formas de interceptar métodos . . .
4.7 Considerações finais . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.