class TypedAnnotationWriter<A extends java.lang.annotation.Annotation,W extends JAnnotationWriter<A>> extends java.lang.Object implements java.lang.reflect.InvocationHandler, JAnnotationWriter<A>
| Modifier and Type | Field and Description |
|---|---|
private java.lang.Class<A> |
annotation
The annotation that we are writing.
|
private java.util.Map<java.lang.String,JAnnotationArrayMember> |
arrays
Keeps track of writers for array members.
|
private JAnnotationUse |
use
This is what we are writing to.
|
private java.lang.Class<W> |
writerType
The type of the writer.
|
| Constructor and Description |
|---|
TypedAnnotationWriter(java.lang.Class<A> annotation,
java.lang.Class<W> writer,
JAnnotationUse use) |
| Modifier and Type | Method and Description |
|---|---|
private java.lang.Object |
addArrayValue(java.lang.Object proxy,
java.lang.String name,
java.lang.Class itemType,
java.lang.Class expectedReturnType,
java.lang.Object arg) |
private void |
checkType(java.lang.Class<?> actual,
java.lang.Class<?> expected)
Check if the type of the argument matches our expectation.
|
(package private) static <W extends JAnnotationWriter<?>> |
create(java.lang.Class<W> w,
JAnnotatable annotatable)
Creates a new typed annotation writer.
|
private W |
createProxy()
Creates a proxy and returns it.
|
private static java.lang.Class<? extends java.lang.annotation.Annotation> |
findAnnotationType(java.lang.Class<?> clazz) |
java.lang.Class<A> |
getAnnotationType()
The type of the annotation that this writer is writing.
|
JAnnotationUse |
getAnnotationUse()
Gets the underlying annotation use object to which we are writing.
|
java.lang.Object |
invoke(java.lang.Object proxy,
java.lang.reflect.Method method,
java.lang.Object[] args) |
private final JAnnotationUse use
private final java.lang.Class<A extends java.lang.annotation.Annotation> annotation
private final java.lang.Class<W extends JAnnotationWriter<A>> writerType
private java.util.Map<java.lang.String,JAnnotationArrayMember> arrays
public TypedAnnotationWriter(java.lang.Class<A> annotation, java.lang.Class<W> writer, JAnnotationUse use)
public JAnnotationUse getAnnotationUse()
JAnnotationWritergetAnnotationUse in interface JAnnotationWriter<A extends java.lang.annotation.Annotation>public java.lang.Class<A> getAnnotationType()
JAnnotationWritergetAnnotationType in interface JAnnotationWriter<A extends java.lang.annotation.Annotation>public java.lang.Object invoke(java.lang.Object proxy,
java.lang.reflect.Method method,
java.lang.Object[] args)
throws java.lang.Throwable
invoke in interface java.lang.reflect.InvocationHandlerjava.lang.Throwableprivate java.lang.Object addArrayValue(java.lang.Object proxy,
java.lang.String name,
java.lang.Class itemType,
java.lang.Class expectedReturnType,
java.lang.Object arg)
private void checkType(java.lang.Class<?> actual,
java.lang.Class<?> expected)
private W createProxy()
static <W extends JAnnotationWriter<?>> W create(java.lang.Class<W> w, JAnnotatable annotatable)
private static java.lang.Class<? extends java.lang.annotation.Annotation> findAnnotationType(java.lang.Class<?> clazz)