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
.
@author Paolo Perrotta
@author Davide Marchignoli
@see java.lang.annotation.Annotation