Package javassist.bytecode.annotation

# 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:
  - `AnnotationsAttribute.getAnnotations()`
  - `ParameterAnnotationsAttribute.getAnnotations()`
  - `MemberValue`
  - `MemberValueVisitor`
  - `AnnotationsWriter`

## Constructor Summary

Constructors
Constructor
Description
`Annotation(int type, ConstPool cp)`
Constructs an annotation including no members.
`Annotation(String typeName, ConstPool cp)`
Constructs an annotation including no members.
`Annotation(ConstPool cp, CtClass clazz)`
Constructs an annotation that can be accessed through the interface represented by `clazz`.

## Method Summary

Modifier and Type
Method
Description
`void`
`addMemberValue(int nameIndex, MemberValue value)`
Adds a new member.
`void`
`addMemberValue(String name, MemberValue value)`
Adds a new member.
`static MemberValue`
`createMemberValue(ConstPool cp, CtClass type)`
Makes an instance of `MemberValue`.
`boolean`
`equals(Object obj)`
Returns true if the given object represents the same annotation as this object.
`Set<String>`
`getMemberNames()`
Obtains all the member names.
`MemberValue`
`getMemberValue(String name)`
Obtains the member value with the given name.
`String`
`getTypeName()`
Obtains the name of the annotation type.
`int`
`hashCode()`
`Object`
`toAnnotationType(ClassLoader cl, ClassPool cp)`
Constructs an annotation-type object representing this annotation.
`String`
`toString()`
Returns a string representation of the annotation.
`void`
`write(AnnotationsWriter writer)`
Writes this annotation.

### Methods inherited from class java.lang.Object

`getClass, notify, notifyAll, wait, wait, wait`

## 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:
  - `addMemberValue(String, MemberValue)`

### 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:
  - `addMemberValue(String, MemberValue)`

### 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:
  - `AnnotationDefaultAttribute`

### 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`