Anotação de retenção
A anotação Retenção indica em qual estágio esse tipo de anotação será retido. Existem três valores:
1.RetentionPolicy.SOURCE - Este tipo de anotações só é retido no nível do código-fonte e será ignorado durante a compilação.
2.RetentionPolicy.CLASS - Este tipo de anotação é retido durante a compilação e existe no arquivo de classe, mas a JVM irá ignorá-lo
3.RetentionPolicy.RUNTIME - Anotações deste tipo serão retidas pela JVM, para que possam ser lidas e utilizadas pela JVM ou outro código utilizando o mecanismo de reflexão em tempo de execução.
O exemplo 5 demonstra a declaração de RetentionPolicy.RUNTIME:
Exemplo 1 de anotações Java:
Copie o código do código da seguinte forma:
@Retention(RetentionPolicy.RUNTIME)
public @interface Test_Retention {
String doTestRetention();
}
Neste exemplo, a anotação @Retention(RetentionPolicy.RUNTIME) indica que a anotação Test_Retention será retida pela máquina virtual para que possa ser lida por meio de reflexão em tempo de execução.
Anotações documentadas
A anotação Documentado indica que esta anotação deve ser registrada pela ferramenta javadoc. Por padrão, o javadoc não inclui anotações. Mas se @Documented for especificado ao declarar uma anotação, ela será processada por ferramentas como o javadoc, portanto, as informações do tipo de anotação. também será incluído na documentação gerada. O Exemplo 6 demonstra ainda mais o uso de @Documented:
Exemplo 2 de anotações Java:
Copie o código do código da seguinte forma:
@Documentado
public @interface Test_Documented {
String doTestDocument();
}
Em seguida, modifique a classe TestAnnotations da seguinte maneira:
Copie o código do código da seguinte forma:
classe pública TestAnnotations {
public static void main(String arg[]) {
new TestAnnotations().doSomeTestRetention();
new TestAnnotations().doSomeTestDocumented();
}
@Test_Retention (doTestRetention = "Teste de retenção de informações de anotação")
public void doSomeTestRetention() {
System.out.printf("Tipo de anotação de teste 'Retenção'");
}
@Test_Documented(doTestDocument="Olá documento")
public void doSomeTestDocumented() {
System.out.printf("Tipo de anotação de teste 'Documentado'");
}
}
Agora, se você usar o comando javadoc para gerar o arquivo TestAnnotations.html, verá resultados semelhantes aos da Figura 1.
Como você pode ver na captura de tela, não há método de informações do tipo de anotação () do método doSomeTestRetention() no documento. No entanto, o documento do método doSomeTestDocumented() fornece as informações de descrição da anotação. A tag @Documented é adicionada à anotação Test_Documented A anotação anterior Test_Retention não especificou a tag @Documented.
Anotação herdada (pode haver algo errado com este parágrafo...)
Este é um tipo de anotação um pouco mais complexo. Indica que a classe anotada herdará automaticamente. Mais especificamente, se a tag @Inherited for usada ao definir a anotação, e então a anotação definida for usada para anotar outra classe pai, a classe pai. tem uma subclasse, então todas as propriedades da classe pai serão herdadas em sua subclasse. No Exemplo 7, você verá os benefícios de usar a tag @Inherited.
Exemplo 3 de anotações Java
Primeiro, defina sua anotação:
Copie o código do código da seguinte forma:
@Herdado
public @interface MeuParentObject {
boolean isInherited() padrão verdadeiro;
String doSomething() padrão "Fazer o quê?";
}
A seguir, uma classe é anotada com anotações:
Copie o código do código da seguinte forma:
@MyParentObject
classe pública MeuFilhoObject {
}
Como você pode ver, você não precisa definir os métodos de interface na classe de implementação. Por causa da tag @Inherited, eles são herdados automaticamente. uma olhada abaixo Esta é uma implementação antiga:
Copie o código do código da seguinte forma:
classe pública MyChildObject implementa MyParentObject {
public boolean isInherited() {
retornar falso;
}
public String doSomething() {
retornar "";
}
público booleano igual a(Objeto obj) {
retornar falso;
}
public int hashCode() {
retornar 0;
}
string pública paraString() {
retornar "";
}
anotação de classe públicaType() {
retornar nulo;
}
}
Você vê a diferença? Como você pode ver, você precisa implementar todos os métodos da interface pai. Além dos métodos isInherited() e doSomething() de myParentObject, você também precisa implementar os métodos equals(), toString(. ) e o método hasCode(). Há também o método annotationType() da classe java.lang.annotation.Annotation. Quer você queira implementar esses métodos ou não, você deve incluí-los no objeto herdado.
para concluir
Este artigo mostra como facilitar o desenvolvimento usando o recurso de anotação do JDK5. As anotações não afetam diretamente a semântica do programa. As ferramentas de desenvolvimento e implantação podem ler essas anotações e processá-las de uma forma, e usar o programa que contém as anotações. pode substituir os arquivos de origem Java adicionais, documentos XML ou outros artefatos antigos. O uso de anotações pode realizar a mesma coisa com menos código e tem melhor detecção de erros em tempo de compilação. O objetivo das anotações é gastar menos tempo em detalhes difíceis e inúteis e focar mais nas regras de lógica de negócios. Este artigo é a primeira parte da série de anotações Java. Na segunda parte, você aprenderá como usar anotações para desenvolver uma anotação simples. Aplicativo Web Finalmente, na parte três, você verá um exemplo complexo que inclui diversas tabelas de banco de dados.