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()
JAnnotationWriter
getAnnotationUse
in interface JAnnotationWriter<A extends java.lang.annotation.Annotation>
public java.lang.Class<A> getAnnotationType()
JAnnotationWriter
getAnnotationType
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.InvocationHandler
java.lang.Throwable
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)
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)