Mas para que possamos usar as anotações de uma maneira mais abrangente podemos também criar nossas próprias anotações, a regra é a mesma da interface com o detalhe que devemos colocar o "@" antes da palavra "interface".
Exemplo:
public @interface MinhaInterface{ }
Ainda é possível declarar métodos que devem ser obrigatoriamente implementados na anotação, assim como nas interfaces, mas estes métodos não devem possuir quaisquer parâmetros, não devem lançar quaisquer exceções e o tipo de retorno deve ser do tipo primitivo, um String, um Class, um Enum ou ainda um array de um destes tipos.
Exemplo:
public @interface MinhaInterface{
String nome();
String valor();
}
Mas além das annotations existem também as Meta-annotations que servem para definir o comportamento da anotação, são elas: Target, Retention, Documented, Inherited
@Target Indica em qual elemento da classe a anotação pode ser aplicada
@Target(ElementType.TYPE) Pode ser aplicada a qualquer elemento da classe.
@Target(ElementType.FIELD) Pode ser aplicada a um campo ou propriedade.
@Target(ElementType.METHOD) Pode ser aplicada a um método.
@Target(ElementType.PARAMETER) Pode ser aplicada a parâmetros de um método
@Target(ElementType.CONSTRUCTOR) Pode ser aplicada a construtores.
@Target(ElementType.LOCAL_VARIABLE) Pode ser aplicada a variáveis locais.
@Target(ElementType.ANNOTATION_TYPE) Indica que o próprio tipo declarado é uma anotação de anotação.
@Retention Indica onde e quando as anotações deste tipo serão obtidas.
@Retention(RetentionPolicy.SOURCE) Serão obtidas somente em nível de fonte e serão ignoradas pelo compilador.
@Retention(RetentionPolicy.CLASS) Serão obtidas somente em nível de compilação e serão ignoradas pela VM.
@Retention(RetentionPolicy.RUNTIME) Obtidas pela VM e serão lidas apenas em runtime.
@Documented Indica se a anotação pertencerá ao javadoc ou algum outro gerador de documentação por padrão.
@Inherited Indica se a anotação sera herdada pelas subclasses automaticamente, sendo assim, caso haja uma consulta procurando por uma anotação qualquer, se a classe consultada não possuir a anotação a classe pai sera consultada por padrão.
Exemplo:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE
public @interface MinhaInterface{
String nome();
String valor();
}
Exemplo de uso:
@MinhaInterface(nome = "Bruno", valor = "R$ 0,00")
public class Pessoa {
private String nome;
private String telefone;
public Pessoa(){
}
}
Bom pessoal aqui fica um breve post de como usar annotation, qualquer duvida www.google.com
Nenhum comentário:
Postar um comentário