Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Metaprogramação em Java: APIs de Reflection e Annotations

Metaprogramação em Java: APIs de Reflection e Annotations

Muitas vezes usamos ferramentas como o Spring e Hibernate e nem sabemos como eles funcionam por "debaixo dos panos". Com essa talk, podemos explorar para que serve a API de Reflection e Annotations além de ver alguns exemplos práticos de como isso pode nos ajudar.

Pedro Queiroz

July 12, 2019
Tweet

Other Decks in Programming

Transcript

  1. “É a programação de programas que escrevem ou manipulam outros

    programas (ou a si próprios), assim como seus dados.”
  2. • Inspecionar e manipular praticamente qualquer coisa • Classes, interfaces,

    atributos, métodos, anotações, etc • Tudo em tempo de execução Como assim?
  3. O que dá para descobrir? • A classe de um

    objeto • O pacote de uma classe • Interfaces e super classes • Modificadores de acesso, atributos, campos, construtores, etc
  4. O que dá para fazer? • Criar instâncias de classes

    dinamicamente • Verificar se um objeto é uma instância de uma classe qualquer • Modificar valores de campos de um objeto • Executar métodos (até os privados!)
  5. E as Anotações? • Mais metadata! • Passam informação para

    o compilador • Passam informações para serem lidas em tempo de execução • Podem ser acessadas via Reflection • Podem estar associadas a praticamente qualquer coisa
  6. • Cenários altamente dinâmicos • Recursos estáticos do Java não

    nos servem mais • Não temos garantia, em tempo de desenvolvimento, de quais são os inputs das pessoas que usam o software Quando devemos usar Reflection?
  7. Referências • https://www.slideshare.net/guilherme_farto/introduo-metaprogramao-com-java- reflection-api • https://slideplayer.com.br/slide/1718058/ • https://www.guru99.com/java-reflection-api.html • https://www.geeksforgeeks.org/reflection-in-java/

    • https://cursos.alura.com.br/course/java-reflection-meta-programacao • https://cursos.alura.com.br/course/java-reflection-anotacoes-injecao-dependencia • https://www.devmedia.com.br/conhecendo-java-reflection/29148