@Documented @Retention(value=RUNTIME) @Target(value=ANNOTATION_TYPE) public @interface Target
java.lang.annotation.ElementType.
If an @Target meta-annotation is not present on an annotation type
T , then an annotation of type T may be written as a
modifier for any declaration except a type parameter declaration.
If an @Target meta-annotation is present, the compiler will enforce
the usage restrictions indicated by ElementType
enum constants, in line with JLS 9.7.4.
For example, this @Target meta-annotation indicates that the
declared type is itself a meta-annotation type. It can only be used on
annotation type declarations:
@Target(ElementType.ANNOTATION_TYPE)
public @interface MetaAnnotationType {
...
}
This @Target meta-annotation indicates that the declared type is
intended solely for use as a member type in complex annotation type
declarations. It cannot be used to annotate anything directly:
@Target({})
public @interface MemberType {
...
}
It is a compile-time error for a single ElementType constant to
appear more than once in an @Target annotation. For example, the
following @Target meta-annotation is illegal:
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.FIELD})
public @interface Bogus {
...
}
| Modifier and Type | Required Element | Description |
|---|---|---|
ElementType[] |
value |
Returns an array of the kinds of elements an annotation type
can be applied to.
|
public abstract ElementType[] value
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.
Scripting on this page tracks web page traffic, but does not change the content in any way.