Muitos dos recursos providos pelos frameworks e componentes mais utilizados na indústria extrapolam os simples conceitos da Orientação a Objetos e fazem uso de reflexão e anotações. A utilização dessas poderosas ferramentas pode fazer uma grande diferença, com potencial de aumentar a produtividade do time e melhorar a estrutura do código.
Neste livro, o uso de reflexão e anotações é abordado por completo, indo desde o funcionamento da API até boas práticas em sua utilização. Além disso, o livro também fala sobre ferramentas de código aberto, manipulação de bytecode e as novidades sobre reflexão do Java 8. Suba de nível em suas habilidades de programação aprendendo essa técnica que vai lhe permitir escrever códigos extremamente flexíveis.
Содержание
1 — Conhecendo a Reflexão
1.1 — Ainda falta alguma coisa na orientação a objetos?
1.2 — Reflexão, muito prazer!
1.3 — O primeiro contato com a API Reflection
1.4 — Usar reflexão tem um preço?
1.5 — Considerações finais
2 — Java Reflection API
2.1 — Obtendo informações sobre as classes
2.2 — Trabalhando com classes
2.3 — Manipulando objetos
2.4 — Procurando métodos e atributos para validação
2.5 — Coisas que podem dar errado
2.6 — Considerações finais
3 — Metadados e Anotações
3.1 — Definição de metadados
3.2 — Criando anotações
3.3 — Lendo anotações em tempo de execução
3.4 — Limitações das anotações
3.5 — Mapeando parâmetros de linha de comando para uma classe
3.6 — Considerações finais
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
5 — Testando classes que usam Reflexão
5.1 — Variando estrutura da classe para teste
5.2 — Teste de proxies dinâmicos
5.3 — Testando a configuração de metadados
5.4 — Gerando classes com Class Mock
5.5 — Considerações finais
6 — Práticas no uso de anotações
6.1 — Mais de uma anotação do mesmo tipo
6.2 — Reduzindo a quantidade de configurações
6.3 — Expressões em anotações
6.4 — Associando comportamento a anotação
6.5 — Mapeamento de anotações
6.6 — Considerações finais
7 — Consumindo e processando metadados
7.1 — Componente base para o exemplo
7.2 — Separando a leitura do processamento de metadados
7.3 — Estendendo a leitura de metadados
7.4 — Tornando os metadados extensíveis
7.5 — Camadas de processamento de metadados
7.6 — Considerações finais
8 — Ferramentas: indo além na reflexão
8.1 — Manipulando beans com Bean Utils
8.2 — Interfaces fluentes para reflexão
8.3 — Procurando por classes
8.4 — Inserindo e substituindo anotações com Aspect J
8.5 — Considerações finais
9 — Manipulação de bytecode
9.1 — Entendendo o bytecode
9.2 — Entendendo o ASM
9.3 — Quando o bytecode pode ser alterado?
9.4 — Criando um bean a partir de um mapa
9.5 — Data da última modificação de um objeto
9.6 — Considerações finais
10 — Reflexão no Java 8
10.1 — Acessando nomes de parâmetros
10.2 — Múltiplas anotações
10.3 — Anotações de Tipo
10.4 — Reflexão e expressões lambda
10.5 — Considerações finais
11 — Truques da API de reflexão
11.1 — Quem me chamou?
11.2 — Recuperando tipos genéricos com reflexão
11.3 — Acessando membros privados
11.4 — API Method Handle
11.5 — Considerações finais
12 — Palavras finais
Dados do produto
Об авторе
Eduardo Guerra é desenvolvedor de frameworks, editor-chefe da revista Mundo J e pesquisador do Instituto Nacional de Pesquisas Espaciais (INPE). Foi professor do Instituto Tecnológico de Aeronáutica (ITA), onde concluiu sua graduação, mestrado e doutorado. Suas pesquisas concentram-se nas áreas de design, arquitetura e teste de software. Possui diversas certificações da plataforma Java e experiência como arquiteto de software. Participa de projetos de frameworks open-source, como Swing Bean, Esfinge e Class Mock. Ele acredita que um bom software faz-se mais com criatividade do que com código e vive em busca de melhores formas para seu desenvolvimento. Está no Twitter como @emguerra.