Class AnnotationDefaultAttribute

java.lang.Object
javassist.bytecode.AttributeInfo
javassist.bytecode.AnnotationDefaultAttribute

public class AnnotationDefaultAttribute extends AttributeInfo
A class representing AnnotationDefault_attribute.

For example, if you declare the following annotation type:

@interface Author {
  String name() default "Shakespeare";
  int age() default 99;
}

The defautl values of name and age are stored as annotation default attributes in Author.class. The following code snippet obtains the default value of name:

ClassPool pool = ...
CtClass cc = pool.get("Author");
CtMethod cm = cc.getDeclaredMethod("age");
MethodInfo minfo = cm.getMethodInfo();
AnnotationDefaultAttribute ada
        = (AnnotationDefaultAttribute)
          minfo.getAttribute(AnnotationDefaultAttribute.tag);
MemberValue value = ada.getDefaultValue());    // default value of age

If the following statement is executed after the code above, the default value of age is set to 80:

ada.setDefaultValue(new IntegerMemberValue(minfo.getConstPool(), 80));
See Also:
  • Field Details

  • Constructor Details

    • AnnotationDefaultAttribute

      public AnnotationDefaultAttribute(ConstPool cp, byte[] info)
      Constructs an AnnotationDefault_attribute.
      Parameters:
      cp - constant pool
      info - the contents of this attribute. It does not include attribute_name_index or attribute_length.
    • AnnotationDefaultAttribute

      public AnnotationDefaultAttribute(ConstPool cp)
      Constructs an empty AnnotationDefault_attribute. The default value can be set by setDefaultValue().
      Parameters:
      cp - constant pool
      See Also:
    • AnnotationDefaultAttribute

      AnnotationDefaultAttribute(ConstPool cp, int n, DataInputStream in) throws IOException
      Parameters:
      n - the attribute name.
      Throws:
      IOException
  • Method Details