El caracter at ( @) indica al compilador que lo que sigue es una anotación. En el siguiente ejemplo, el nombre de la anotación es Override:
La @Override anotación @Override informa al compilador que el elemento debe anular un elemento declarado en una superclase. Los métodos de anulación se discutirán en Interfaces y Herencia .
La @SuppressWarnings anotación @SuppressWarnings le dice al compilador que suprima advertencias específicas que de lo contrario generaría. En el siguiente ejemplo, se usa un método obsoleto, y el compilador generalmente genera una advertencia. En este caso, sin embargo, la anotación hace que se suprima la advertencia.
// usar un método obsoleto y decirle al
// compilador que no genere una advertencia
@SuppressWarnings("deprecation")
void useDeprecatedMethod() {
// deprecation warning
// - suppressed
objectOne.deprecatedMethod();
}
```
# La @SafeVarargs
anotación @SafeVarargs , cuando se aplica a un método o constructor, afirma que el código no realiza
operaciones potencialmente inseguras en su varargsparámetro. Cuando se utiliza este tipo de anotación,
varargsse suprimen las advertencias no verificadas relacionadas con el uso.
@ La @FunctionalInterface
anotación @FunctionalInterface , introducida en Java SE 8, indica que la declaración de tipo está destinada
a ser una interfaz funcional, tal como se define en la Especificación del lenguaje Java.
# crear anotacion
import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface MultipleInvocation {
int timesToInvoke() default 1;
}
@Target – Especifica el tipo de elemento al que se va a asociar la anotación.
ElementType.TYPE – se puede aplicar a cualquier elemento de la clase.
ElementType.FIELD – se puede aplicar a un miebro de la clase.
ElementType.METHOD – se puede aplicar a un método
ElementType.PARAMETER – se puede aplicar a parámetros de un método.
ElementType.CONSTRUCTOR – se puede aplicar a constructores
ElementType.LOCAL_VARIABLE – se puede aplicar a variables locales
ElementType.ANNOTATION_TYPE – indica que el tipo declarado en sí es un tipo de anotación.
@Retention – Especifica el nivel de retención de la anotación (cuándo se puede acceder a ella).
RetentionPolicy.SOURCE — Retenida sólo a nivel de código; ignorada por el compilador.
RetentionPolicy.CLASS — Retenida en tiempo de compilación, pero ignorada en tiempo de ejcución.
RetentionPolicy.RUNTIME — Retenida en tiempo de ejecución, sólo se puede acceder a ella en este tiempo.
@Documented – Hará que la anotación se mencione en el javadoc.
@Inherited – Indica que la anotación será heredada automáticamente.