final class AnnotationWriter extends java.lang.Object implements 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.
|
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,
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.
|
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 interface AnnotationVisitor
name
- the value name.value
- the actual value, whose type must be Byte
,
Boolean
, Character
, Short
,
Integer
, Long
, Float
, Double
,
String
or Type
. 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 interface 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 interface 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 interface AnnotationVisitor
name
- the value name.public void visitEnd()
AnnotationVisitor
visitEnd
in interface AnnotationVisitor
int getSize()
void put(ByteVector out)
out
- where the annotations must be put.static void put(AnnotationWriter[] panns, ByteVector out)
panns
- an array of annotation writer lists.out
- where the annotations must be put.