/** * Set the source file of this class file by adding a source file * attribute. The source doesn't actually have to be a file, * but the virtual machine spec names the attribute "SourceFile_attribute". */ public void setSourceFile(String fileName) { addAttribute(new SourceFileAttr(mCp, fileName)); }
/** * Mark this class as being deprecated by adding a special attribute. */ public void markDeprecated() { addAttribute(new DeprecatedAttr(mCp)); }
/** * Mark this class as being synthetic by adding a special attribute. */ public void markSynthetic() { addAttribute(new SyntheticAttr(mCp)); }
/** * Add a runtime invisible annotation. */ public Annotation addRuntimeInvisibleAnnotation(TypeDesc type) { AnnotationsAttr attr = null; for (int i = mAttributes.size(); --i >= 0; ) { Attribute a = mAttributes.get(i); if (a instanceof RuntimeInvisibleAnnotationsAttr) { attr = (AnnotationsAttr) a; } } if (attr == null) { attr = new RuntimeInvisibleAnnotationsAttr(mCp); addAttribute(attr); } Annotation ann = new Annotation(mCp); ann.setType(type); attr.addAnnotation(ann); return ann; }
/** * Add a runtime visible annotation. */ public Annotation addRuntimeVisibleAnnotation(TypeDesc type) { AnnotationsAttr attr = null; for (int i = mAttributes.size(); --i >= 0; ) { Attribute a = mAttributes.get(i); if (a instanceof RuntimeVisibleAnnotationsAttr) { attr = (AnnotationsAttr) a; } } if (attr == null) { attr = new RuntimeVisibleAnnotationsAttr(mCp); addAttribute(attr); } Annotation ann = new Annotation(mCp); ann.setType(type); attr.addAnnotation(ann); return ann; }
addAttribute(new InnerClassesAttr(mCp)); inner.addAttribute(new InnerClassesAttr(inner.getConstantPool())); inner.mInnerClassesAttr.addInnerClass(fullInnerClassName, mClassName, innerClassName, modifiers);
for (int i=0; i<size; i++) { Attribute attr = Attribute.readFrom(cp, din, attrFactory); cf.addAttribute(attr); if (attr instanceof InnerClassesAttr) { cf.mInnerClassesAttr = (InnerClassesAttr)attr;
/** * Add an inner class to this method. * * @param innerClassName Optional short inner class name. * @param superClassName Full super class name. */ public ClassFile addInnerClass(String innerClassName, String superClassName) { ClassFile inner; if (innerClassName == null) { inner = mParent.addInnerClass(null, null, superClassName); } else { String fullInnerClassName = mParent.getClassName() + '$' + (++mAnonymousInnerClassCount) + innerClassName; inner = mParent.addInnerClass(fullInnerClassName, innerClassName, superClassName); } if (mParent.getMajorVersion() >= 49) { inner.addAttribute(new EnclosingMethodAttr (mCp, mCp.addConstantClass(mParent.getClassName()), mCp.addConstantNameAndType(mNameConstant, mDescriptorConstant))); } return inner; }
/** * Set the source file of this class file by adding a source file * attribute. The source doesn't actually have to be a file, * but the virtual machine spec names the attribute "SourceFile_attribute". */ public void setSourceFile(String fileName) { addAttribute(new SourceFileAttr(mCp, fileName)); }
/** * Mark this class as being synthetic by adding a special attribute. */ public void markSynthetic() { addAttribute(new SyntheticAttr(mCp)); }
/** * Mark this class as being deprecated by adding a special attribute. */ public void markDeprecated() { addAttribute(new DeprecatedAttr(mCp)); }
/** * Add a runtime invisible annotation. */ public Annotation addRuntimeInvisibleAnnotation(TypeDesc type) { AnnotationsAttr attr = null; for (int i = mAttributes.size(); --i >= 0; ) { Attribute a = mAttributes.get(i); if (a instanceof RuntimeInvisibleAnnotationsAttr) { attr = (AnnotationsAttr) a; } } if (attr == null) { attr = new RuntimeInvisibleAnnotationsAttr(mCp); addAttribute(attr); } Annotation ann = new Annotation(mCp); ann.setType(type); attr.addAnnotation(ann); return ann; }
/** * Add a runtime visible annotation. */ public Annotation addRuntimeVisibleAnnotation(TypeDesc type) { AnnotationsAttr attr = null; for (int i = mAttributes.size(); --i >= 0; ) { Attribute a = mAttributes.get(i); if (a instanceof RuntimeVisibleAnnotationsAttr) { attr = (AnnotationsAttr) a; } } if (attr == null) { attr = new RuntimeVisibleAnnotationsAttr(mCp); addAttribute(attr); } Annotation ann = new Annotation(mCp); ann.setType(type); attr.addAnnotation(ann); return ann; }
addAttribute(new InnerClassesAttr(mCp)); inner.addAttribute(new InnerClassesAttr(inner.getConstantPool())); inner.mInnerClassesAttr.addInnerClass(fullInnerClassName, mClassName, innerClassName, modifiers);
for (int i=0; i<size; i++) { Attribute attr = Attribute.readFrom(cp, din, attrFactory); cf.addAttribute(attr); if (attr instanceof InnerClassesAttr) { cf.mInnerClassesAttr = (InnerClassesAttr)attr;
/** * Add an inner class to this method. * * @param innerClassName Optional short inner class name. * @param superClassName Full super class name. */ public ClassFile addInnerClass(String innerClassName, String superClassName) { ClassFile inner; if (innerClassName == null) { inner = mParent.addInnerClass(null, null, superClassName); } else { String fullInnerClassName = mParent.getClassName() + '$' + (++mAnonymousInnerClassCount) + innerClassName; inner = mParent.addInnerClass(fullInnerClassName, innerClassName, superClassName); } if (mParent.getMajorVersion() >= 49) { inner.addAttribute(new EnclosingMethodAttr (mCp, mCp.addConstantClass(mParent.getClassName()), mCp.addConstantNameAndType(mNameConstant, mDescriptorConstant))); } return inner; }