Class TypeAnnotations
java.lang.Object
org.apache.bcel.classfile.Attribute
org.apache.bcel.classfile.TypeAnnotations
- All Implemented Interfaces:
Cloneable, Iterable<TypeAnnotationEntry>, Node
- Direct Known Subclasses:
RuntimeInvisibleTypeAnnotations, RuntimeVisibleTypeAnnotations
Base class for the type annotation attributes,
RuntimeVisibleTypeAnnotations and RuntimeInvisibleTypeAnnotations: the annotations written on
the types used in a declaration (such as List<@Nullable String>, the supertypes of a class, a throws clause, or the declaration and the
bounds of a type parameter as in <T extends @Nullable Object>) or in the code of a method (such as a cast, an instanceof, a new
expression or a local variable), which the attributes of the declaration annotations do not hold. They are attributes of a class, a field, a method, a
record component or a Code attribute.- Since:
- 6.14.0
- See Also:
-
Field Summary
Fields inherited from class Attribute
constant_pool, EMPTY_ARRAY, length, name_index, tagModifier and TypeFieldDescriptionprotected ConstantPoolDeprecated.(since 6.0) will be made private; do not access directly, use getter/setter.static final Attribute[]Empty array.protected intDeprecated.(since 6.0) (since 6.0) will be made private; do not access directly, use getter/setter.protected intDeprecated.(since 6.0) will be made private; do not access directly, use getter/setter.protected byteDeprecated.(since 6.0) will be made private; do not access directly, use getter/setter. -
Constructor Summary
ConstructorsConstructorDescriptionTypeAnnotations(byte annotationType, int nameIndex, int length, TypeAnnotationEntry[] typeAnnotationTable, ConstantPool constantPool, boolean isRuntimeVisible) Constructs an instance. -
Method Summary
Modifier and TypeMethodDescriptionvoidCalled by objects that are traversing the nodes of the tree implicitly defined by the contents of a Java class.protected final TypeAnnotationEntry[]copyTypeAnnotations(ConstantPool constantPool) Creates deep copies of the type annotations, which refer to the given constant pool.final intGets the number of type annotations.Gets the type annotations.booleanTests whether the annotations are visible at runtime.iterator()final voidsetTypeAnnotationTable(TypeAnnotationEntry[] typeAnnotationTable) Sets the type annotations.final StringtoString()Converts to a String representation.protected voidWrites the type annotations to a DataOutputStream.Methods inherited from class Attribute
addAttributeReader, addAttributeReader, clone, copy, dump, getConstantPool, getLength, getName, getNameIndex, getTag, println, readAttribute, readAttribute, readAttribute, removeAttributeReader, setConstantPool, setLength, setNameIndexModifier and TypeMethodDescriptionstatic voidaddAttributeReader(String name, AttributeReader attributeReader) Deprecated.(6.0) UseAttribute.addAttributeReader(String, UnknownAttributeReader)instead.static voidaddAttributeReader(String name, UnknownAttributeReader unknownAttributeReader) Add an Attribute reader capable of parsing (user-defined) attributes named "name".clone()Use copy() if you want to have a deep copy(), that is, with all references copied correctly.abstract Attributecopy(ConstantPool constantPool) Creates a deep copy of this attribute.voiddump(DataOutputStream file) Dumps attribute to file stream in binary format.final ConstantPoolGets the constant pool used by this object.final intGets the length of attribute field in bytes.getName()Gets the name of the attribute.final intGets the name index in constant pool of attribute name.final bytegetTag()Gets the tag of attribute, that is, its type.protected static voidPrints a message to stderr if debug mode is enabled.static AttributereadAttribute(DataInput dataInput, ConstantPool constantPool) Reads one attribute using standard eight-byte Code headers.static AttributereadAttribute(DataInput dataInput, ConstantPool constantPool, boolean compactCodeHeader) Reads one attribute using the selected Code header layout.static AttributereadAttribute(DataInputStream dataInputStream, ConstantPool constantPool) Reads one attribute using standard eight-byte Code headers.static voidremoveAttributeReader(String name) Remove attribute readerfinal voidsetConstantPool(ConstantPool constantPool) Sets the constant pool to be used for this object.final voidsetLength(int length) Sets the length in bytes.final voidsetNameIndex(int nameIndex) Sets the name index of attribute.Methods inherited from class Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface Iterable
forEach, spliterator
-
Constructor Details
-
TypeAnnotations
public TypeAnnotations(byte annotationType, int nameIndex, int length, TypeAnnotationEntry[] typeAnnotationTable, ConstantPool constantPool, boolean isRuntimeVisible) Constructs an instance.- Parameters:
annotationType- The subclass type of the attribute.nameIndex- Index pointing to the name of the attribute.length- Content length in bytes.typeAnnotationTable- The actual type annotations.constantPool- Array of constants.isRuntimeVisible- whether the annotations are visible at runtime.
-
-
Method Details
-
accept
Description copied from class:AttributeCalled by objects that are traversing the nodes of the tree implicitly defined by the contents of a Java class. That is, the hierarchy of methods, fields, attributes, and other elements forms a tree of objects. -
copyTypeAnnotations
Creates deep copies of the type annotations, which refer to the given constant pool.- Parameters:
constantPool- The constant pool of the copies.- Returns:
- The copies.
-
getNumTypeAnnotations
Gets the number of type annotations.- Returns:
- The number of type annotations.
-
getTypeAnnotationEntries
Gets the type annotations.- Returns:
- The type annotations.
-
isRuntimeVisible
Tests whether the annotations are visible at runtime.- Returns:
- true if the annotations are runtime visible.
-
iterator
- Specified by:
iteratorin interfaceIterable<TypeAnnotationEntry>
-
setTypeAnnotationTable
Sets the type annotations.- Parameters:
typeAnnotationTable- The type annotations.
-
toString
-
writeTypeAnnotations
Writes the type annotations to a DataOutputStream.- Parameters:
dos- The data output stream.- Throws:
IOException- Thrown if an I/O error occurs.
-