A concrete implementation of
Annotation
that pretends it is a
"real" source code annotation. It's also an
InvocationHandler
.
When you create an
AnnotationProxy
, you must initialize it
with an
AnnotationDescriptor
.
The adapter checks that the provided elements are the same elements defined
in the annotation interface. However, it does
not check that their
values are the right type. If you omit an element, the adapter will use the
default value for that element from the annotation interface, if it exists.
If no default exists, it will throw an exception.
Warning: this class does not implement
hashCode()
and
equals()
- it just uses the ones it inherits from
Object
.
This means that an
AnnotationProxy
does
not follow the
recommendations of the
Annotation
javadoc about these two
methods. That's why you should never mix
AnnotationProxies
with "real" annotations. For example, don't put them into the same
Collection
.