final class AnnotationWriter extends AnnotationVisitor
AnnotationVisitor
that generates annotations in bytecode form.Modifier and Type | Field and Description |
---|---|
private ByteVector |
bv
The annotation values in bytecode form.
|
private ClassWriter |
cw
The class writer to which this annotation must be added.
|
private boolean |
named
true if values are named, false otherwise.
|
(package private) AnnotationWriter |
next
Next annotation writer.
|
private int |
offset
Where the number of values of this annotation must be stored in
parent . |
private ByteVector |
parent
The byte vector to be used to store the number of values of this
annotation.
|
(package private) AnnotationWriter |
prev
Previous annotation writer.
|
private int |
size
The number of values in this annotation.
|
api, av
Constructor and Description |
---|
AnnotationWriter(ClassWriter cw,
boolean named,
ByteVector bv,
ByteVector parent,
int offset)
Constructs a new
AnnotationWriter . |
Modifier and Type | Method and Description |
---|---|
(package private) int |
getSize()
Returns the size of this annotation writer list.
|
(package private) static void |
put(AnnotationWriter[] panns,
int off,
ByteVector out)
Puts the given annotation lists into the given byte vector.
|
(package private) void |
put(ByteVector out)
Puts the annotations of this annotation writer list into the given byte
vector.
|
(package private) static void |
putTarget(int typeRef,
TypePath typePath,
ByteVector out)
Puts the given type reference and type path into the given bytevector.
|
void |
visit(java.lang.String name,
java.lang.Object value)
Visits a primitive value of the annotation.
|
AnnotationVisitor |
visitAnnotation(java.lang.String name,
java.lang.String desc)
Visits a nested annotation value of the annotation.
|
AnnotationVisitor |
visitArray(java.lang.String name)
Visits an array value of the annotation.
|
void |
visitEnd()
Visits the end of the annotation.
|
void |
visitEnum(java.lang.String name,
java.lang.String desc,
java.lang.String value)
Visits an enumeration value of the annotation.
|
private final ClassWriter cw
private int size
private final boolean named
private final ByteVector bv
private final ByteVector parent
bv
.private final int offset
parent
.AnnotationWriter next
AnnotationWriter prev
AnnotationWriter(ClassWriter cw, boolean named, ByteVector bv, ByteVector parent, int offset)
AnnotationWriter
.cw
- the class writer to which this annotation must be added.named
- true if values are named, false otherwise.bv
- where the annotation values must be stored.parent
- where the number of annotation values must be stored.offset
- where in parent the number of annotation values must
be stored.public void visit(java.lang.String name, java.lang.Object value)
AnnotationVisitor
visit
in class AnnotationVisitor
name
- the value name.value
- the actual value, whose type must be Byte
,
Boolean
, Character
, Short
,
Integer
, Long
, Float
, Double
,
String
or Type
or OBJECT or ARRAY sort. This
value can also be an array of byte, boolean, short, char, int,
long, float or double values (this is equivalent to using
visitArray
and visiting each array element
in turn, but is more convenient).public void visitEnum(java.lang.String name, java.lang.String desc, java.lang.String value)
AnnotationVisitor
visitEnum
in class AnnotationVisitor
name
- the value name.desc
- the class descriptor of the enumeration class.value
- the actual enumeration value.public AnnotationVisitor visitAnnotation(java.lang.String name, java.lang.String desc)
AnnotationVisitor
visitAnnotation
in class AnnotationVisitor
name
- the value name.desc
- the class descriptor of the nested annotation class.public AnnotationVisitor visitArray(java.lang.String name)
AnnotationVisitor
visit
. This is what
ClassReader
does.visitArray
in class AnnotationVisitor
name
- the value name.public void visitEnd()
AnnotationVisitor
visitEnd
in class AnnotationVisitor
int getSize()
void put(ByteVector out)
out
- where the annotations must be put.static void put(AnnotationWriter[] panns, int off, ByteVector out)
panns
- an array of annotation writer lists.off
- index of the first annotation to be written.out
- where the annotations must be put.static void putTarget(int typeRef, TypePath typePath, ByteVector out)
typeRef
- a reference to the annotated type. See TypeReference
.typePath
- the path to the annotated type argument, wildcard bound, array
element type, or static inner type within 'typeRef'. May be
null if the annotation targets 'typeRef' as a whole.out
- where the type reference and type path must be put.