Class Annotation

java.lang.Object
javassist.bytecode.annotation.Annotation

public class Annotation extends Object
The annotation structure.

An instance of this class is returned by getAnnotations() in AnnotationsAttribute or in ParameterAnnotationsAttribute.

Author:
Bill Burke, Shigeru Chiba, Adrian Brock
See Also:
  • Constructor Details

    • Annotation

      public Annotation(int type, ConstPool cp)
      Constructs an annotation including no members. A member can be later added to the created annotation by addMemberValue().
      Parameters:
      type - the index into the constant pool table. the entry at that index must be the CONSTANT_Utf8_Info structure repreenting the name of the annotation interface type.
      cp - the constant pool table.
      See Also:
    • Annotation

      public Annotation(String typeName, ConstPool cp)
      Constructs an annotation including no members. A member can be later added to the created annotation by addMemberValue().
      Parameters:
      typeName - the fully-qualified name of the annotation interface type.
      cp - the constant pool table.
      See Also:
    • Annotation

      public Annotation(ConstPool cp, CtClass clazz) throws NotFoundException
      Constructs an annotation that can be accessed through the interface represented by clazz. The values of the members are not specified.
      Parameters:
      cp - the constant pool table.
      clazz - the interface.
      Throws:
      NotFoundException - when the clazz is not found
  • Method Details

    • createMemberValue

      public static MemberValue createMemberValue(ConstPool cp, CtClass type) throws NotFoundException
      Makes an instance of MemberValue.
      Parameters:
      cp - the constant pool table.
      type - the type of the member.
      Returns:
      the member value
      Throws:
      NotFoundException - when the type is not found
    • addMemberValue

      public void addMemberValue(int nameIndex, MemberValue value)
      Adds a new member.
      Parameters:
      nameIndex - the index into the constant pool table. The entry at that index must be a CONSTANT_Utf8_info structure. structure representing the member name.
      value - the member value.
    • addMemberValue

      public void addMemberValue(String name, MemberValue value)
      Adds a new member.
      Parameters:
      name - the member name.
      value - the member value.
    • toString

      public String toString()
      Returns a string representation of the annotation.
      Overrides:
      toString in class Object
    • getTypeName

      public String getTypeName()
      Obtains the name of the annotation type.
      Returns:
      the type name
    • getMemberNames

      public Set<String> getMemberNames()
      Obtains all the member names.
      Returns:
      null if no members are defined.
    • getMemberValue

      public MemberValue getMemberValue(String name)
      Obtains the member value with the given name.

      If this annotation does not have a value for the specified member, this method returns null. It does not return a MemberValue with the default value. The default value can be obtained from the annotation type.

      Parameters:
      name - the member name
      Returns:
      null if the member cannot be found or if the value is the default value.
      See Also:
    • toAnnotationType

      public Object toAnnotationType(ClassLoader cl, ClassPool cp) throws ClassNotFoundException, NoSuchClassError
      Constructs an annotation-type object representing this annotation. For example, if this annotation represents @Author, this method returns an Author object.
      Parameters:
      cl - class loader for loading an annotation type.
      cp - class pool for obtaining class files.
      Returns:
      the annotation
      Throws:
      ClassNotFoundException - if the class cannot found.
      NoSuchClassError - if the class linkage fails.
    • write

      public void write(AnnotationsWriter writer) throws IOException
      Writes this annotation.
      Parameters:
      writer - the output.
      Throws:
      IOException - for an error during the write
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Returns true if the given object represents the same annotation as this object. The equality test checks the member values.
      Overrides:
      equals in class Object