Package org.objectweb.asm
Class FieldWriter
- java.lang.Object
-
- org.objectweb.asm.FieldVisitor
-
- org.objectweb.asm.FieldWriter
-
final class FieldWriter extends FieldVisitor
AFieldVisitor
that generates a corresponding 'field_info' structure, as defined in the Java Virtual Machine Specification (JVMS).- See Also:
- JVMS 4.5
-
-
Field Summary
Fields Modifier and Type Field Description private int
accessFlags
The access_flags field of the field_info JVMS structure.private int
constantValueIndex
The constantvalue_index field of the ConstantValue attribute of this field_info, or 0 if there is no ConstantValue attribute.private int
descriptorIndex
The descriptor_index field of the field_info JVMS structure.private Attribute
firstAttribute
The first non standard attribute of this field.private AnnotationWriter
lastRuntimeInvisibleAnnotation
The last runtime invisible annotation of this field.private AnnotationWriter
lastRuntimeInvisibleTypeAnnotation
The last runtime invisible type annotation of this field.private AnnotationWriter
lastRuntimeVisibleAnnotation
The last runtime visible annotation of this field.private AnnotationWriter
lastRuntimeVisibleTypeAnnotation
The last runtime visible type annotation of this field.private int
nameIndex
The name_index field of the field_info JVMS structure.private int
signatureIndex
The signature_index field of the Signature attribute of this field_info, or 0 if there is no Signature attribute.private SymbolTable
symbolTable
Where the constants used in this FieldWriter must be stored.-
Fields inherited from class org.objectweb.asm.FieldVisitor
api, fv
-
-
Constructor Summary
Constructors Constructor Description FieldWriter(SymbolTable symbolTable, int access, java.lang.String name, java.lang.String descriptor, java.lang.String signature, java.lang.Object constantValue)
Constructs a newFieldWriter
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) void
collectAttributePrototypes(Attribute.Set attributePrototypes)
Collects the attributes of this field into the given set of attribute prototypes.(package private) int
computeFieldInfoSize()
Returns the size of the field_info JVMS structure generated by this FieldWriter.(package private) void
putFieldInfo(ByteVector output)
Puts the content of the field_info JVMS structure generated by this FieldWriter into the given ByteVector.AnnotationVisitor
visitAnnotation(java.lang.String descriptor, boolean visible)
Visits an annotation of the field.void
visitAttribute(Attribute attribute)
Visits a non standard attribute of the field.void
visitEnd()
Visits the end of the field.AnnotationVisitor
visitTypeAnnotation(int typeRef, TypePath typePath, java.lang.String descriptor, boolean visible)
Visits an annotation on the type of the field.
-
-
-
Field Detail
-
symbolTable
private final SymbolTable symbolTable
Where the constants used in this FieldWriter must be stored.
-
accessFlags
private final int accessFlags
The access_flags field of the field_info JVMS structure. This field can contain ASM specific access flags, such asOpcodes.ACC_DEPRECATED
, which are removed when generating the ClassFile structure.
-
nameIndex
private final int nameIndex
The name_index field of the field_info JVMS structure.
-
descriptorIndex
private final int descriptorIndex
The descriptor_index field of the field_info JVMS structure.
-
signatureIndex
private int signatureIndex
The signature_index field of the Signature attribute of this field_info, or 0 if there is no Signature attribute.
-
constantValueIndex
private int constantValueIndex
The constantvalue_index field of the ConstantValue attribute of this field_info, or 0 if there is no ConstantValue attribute.
-
lastRuntimeVisibleAnnotation
private AnnotationWriter lastRuntimeVisibleAnnotation
The last runtime visible annotation of this field. The previous ones can be accessed with theAnnotationWriter.previousAnnotation
field. May be null.
-
lastRuntimeInvisibleAnnotation
private AnnotationWriter lastRuntimeInvisibleAnnotation
The last runtime invisible annotation of this field. The previous ones can be accessed with theAnnotationWriter.previousAnnotation
field. May be null.
-
lastRuntimeVisibleTypeAnnotation
private AnnotationWriter lastRuntimeVisibleTypeAnnotation
The last runtime visible type annotation of this field. The previous ones can be accessed with theAnnotationWriter.previousAnnotation
field. May be null.
-
lastRuntimeInvisibleTypeAnnotation
private AnnotationWriter lastRuntimeInvisibleTypeAnnotation
The last runtime invisible type annotation of this field. The previous ones can be accessed with theAnnotationWriter.previousAnnotation
field. May be null.
-
firstAttribute
private Attribute firstAttribute
The first non standard attribute of this field. The next ones can be accessed with theAttribute.nextAttribute
field. May be null.WARNING: this list stores the attributes in the reverse order of their visit. firstAttribute is actually the last attribute visited in
visitAttribute(org.objectweb.asm.Attribute)
. TheputFieldInfo(org.objectweb.asm.ByteVector)
method writes the attributes in the order defined by this list, i.e. in the reverse order specified by the user.
-
-
Constructor Detail
-
FieldWriter
FieldWriter(SymbolTable symbolTable, int access, java.lang.String name, java.lang.String descriptor, java.lang.String signature, java.lang.Object constantValue)
Constructs a newFieldWriter
.- Parameters:
symbolTable
- where the constants used in this FieldWriter must be stored.access
- the field's access flags (seeOpcodes
).name
- the field's name.descriptor
- the field's descriptor (seeType
).signature
- the field's signature. May be null.constantValue
- the field's constant value. May be null.
-
-
Method Detail
-
visitAnnotation
public AnnotationVisitor visitAnnotation(java.lang.String descriptor, boolean visible)
Description copied from class:FieldVisitor
Visits an annotation of the field.- Overrides:
visitAnnotation
in classFieldVisitor
- Parameters:
descriptor
- the class descriptor of the annotation class.visible
- true if the annotation is visible at runtime.- Returns:
- a visitor to visit the annotation values, or null if this visitor is not interested in visiting this annotation.
-
visitTypeAnnotation
public AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, java.lang.String descriptor, boolean visible)
Description copied from class:FieldVisitor
Visits an annotation on the type of the field.- Overrides:
visitTypeAnnotation
in classFieldVisitor
- Parameters:
typeRef
- a reference to the annotated type. The sort of this type reference must beTypeReference.FIELD
. SeeTypeReference
.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.descriptor
- the class descriptor of the annotation class.visible
- true if the annotation is visible at runtime.- Returns:
- a visitor to visit the annotation values, or null if this visitor is not interested in visiting this annotation.
-
visitAttribute
public void visitAttribute(Attribute attribute)
Description copied from class:FieldVisitor
Visits a non standard attribute of the field.- Overrides:
visitAttribute
in classFieldVisitor
- Parameters:
attribute
- an attribute.
-
visitEnd
public void visitEnd()
Description copied from class:FieldVisitor
Visits the end of the field. This method, which is the last one to be called, is used to inform the visitor that all the annotations and attributes of the field have been visited.- Overrides:
visitEnd
in classFieldVisitor
-
computeFieldInfoSize
int computeFieldInfoSize()
Returns the size of the field_info JVMS structure generated by this FieldWriter. Also adds the names of the attributes of this field in the constant pool.- Returns:
- the size in bytes of the field_info JVMS structure.
-
putFieldInfo
void putFieldInfo(ByteVector output)
Puts the content of the field_info JVMS structure generated by this FieldWriter into the given ByteVector.- Parameters:
output
- where the field_info structure must be put.
-
collectAttributePrototypes
final void collectAttributePrototypes(Attribute.Set attributePrototypes)
Collects the attributes of this field into the given set of attribute prototypes.- Parameters:
attributePrototypes
- a set of attribute prototypes.
-
-