[MÚSICA] Olá a todos! Meu nome é Eduardo Guerra e estamos mais uma vez aqui no Curso de Desenvolvimento Ágil com Java Avançado. Fizemos aqui de reflexão aquele exemplo do comparador, então vamos ver exemplo simples de como usar as anotações aqui nesse [INAUDÍVEL]. Então imagine o seguinte: imagine que talvez eu não queira que todas as propriedades sejam incluídas aqui nessa diferença na hora de fazer essa comparação. Por exemplo, a idade é uma coisa que realmente sempre muda, então eu não vou querer que sejam apontadas diferenças na idade, não me interessa. Então, por exemplo: imagine que eu tenha lá formulário com informações e eu tenha, por exemplo, a data de atualização. Eu vou querer saber o que mudou nas informações, não quero que ele me aponte novamente que a data que ele salvou mudou. Então o que eu vou fazer: o comparador trata todos os gets. Como ele não tem aqui nada que seja específico da classe, eu não consigo fazer " se for o tal ou o tal você vai ignorar" porque isso daqui vai depender muito da classe. Então o que eu vou fazer? Eu vou criar uma anotação que é uma informação a mais, que vai me dizer quando que eu tenho que ignorar na comparação uma determinada propriedade. Vamos ver como que a gente faz isso. Então eu vou vir aqui, vou dar New Annotation e eu vou chamar de IgnorarNaComparacao. Eu tenho que colocar, como eu falei, o Retention RUNTIME pra que eu consiga encontrar essa anotação e eu vou colocar aqui- eu não cheguei a falar na aula teórica, mas eu posso limitar, se eu não colocar nada eu consigo adicionar essa anotação qualquer lugar. Eu posso especificar aqui dizendo exatamente onde que eu quero que aquela anotação possa entrar. Então eu vou definir aqui target, ele recebe aqui ElementType, e eu vou colocar aqui que eu quero que ele coloque no método, pra, de repente, não se confundir e não colocar no field. Então eu vou colocar aqui ignorar na comparação e vou adicionar no método getter lá de pessoa onde eu tenho o get idade. Então vou colocar aqui o ignorar na comparação. Eu vou salvar e aí é só executar aqui que ele vai ignorar. Certo? Errado. Por quê? Como eu falei, lembre lá da preguicinha falando na aula "anotação não faz nada, ela só fica alí". Agora, o meu comparado tem que ir lá e verificar a presença daquela anotação pra ele poder ignorar. Então eu vou vir aqui no meu comparador, e eu tenho aqui, eu estou procurando todos os métodos get e vou adicionar uma restrição aqui onde eu tenho, ele verifica. Se tem a anotação presente, ignorar na comparação. Ele recebe alí o .class. Então ele não pode ter essa anotação presente. Então agora eu adicionei alí a restrição, vou estar salvando e aqui, na hora que eu executar o meu principal, é para ele retirar alí a idade. Agora a idade não está sendo incluída na comparação. Então aqui eu poderia, por exemplo, estar adicionando anotações para que ele, de repente, entre dentro do objeto da propriedade e faça a comparação de todos os seus campos, ele poderia estar botando, por exemplo, uma tolerância numérica, então tem várias coisas interessantes que daria pra estar adicionando anotações para personalizar, customizar aqui esse algorítimo de comparação; e aí eu acrescentando as anotações eu posso estar adicionando novas informações além das que a classe já tem para que eu possa, nesse meu componente de comparação, levar todas essas informações consideração. Certo? Então, muito obrigado por assistir, espero que com esse hands-on vocês tenham conseguido entender melhor como que você utiliza e cria anotações. Muito obrigado. [MÚSICA]