/** * Get or create a constant from the constant pool representing a field in * any class. */ public ConstantFieldInfo addConstantField(String className, String fieldName, TypeDesc type) { ConstantInfo ci = new ConstantFieldInfo (addConstantClass(className), addConstantNameAndType(fieldName, type)); return (ConstantFieldInfo)addConstant(ci); }
/** * Get or create a constant from the constant pool representing an * interface method in any interface. */ public ConstantInterfaceMethodInfo addConstantInterfaceMethod(String className, String methodName, TypeDesc ret, TypeDesc[] params) { MethodDesc md = MethodDesc.forArguments(ret, params); ConstantInfo ci = new ConstantInterfaceMethodInfo (addConstantClass(className), addConstantNameAndType(methodName, md)); return (ConstantInterfaceMethodInfo)addConstant(ci); }
/** * Get or create a constant from the constant pool representing a method * in any class. If the method returns void, set ret to null. */ public ConstantMethodInfo addConstantMethod(String className, String methodName, TypeDesc ret, TypeDesc[] params) { MethodDesc md = MethodDesc.forArguments(ret, params); ConstantInfo ci = new ConstantMethodInfo (addConstantClass(className), addConstantNameAndType(methodName, md)); return (ConstantMethodInfo)addConstant(ci); }
/** * 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; }
/** * Get or create a constant from the constant pool representing a field in * any class. */ public ConstantFieldInfo addConstantField(String className, String fieldName, TypeDesc type) { ConstantInfo ci = new ConstantFieldInfo (addConstantClass(className), addConstantNameAndType(fieldName, type)); return (ConstantFieldInfo)addConstant(ci); }
/** * Get or create a constant from the constant pool representing a method * in any class. If the method returns void, set ret to null. */ public ConstantMethodInfo addConstantMethod(String className, String methodName, TypeDesc ret, TypeDesc[] params) { MethodDesc md = MethodDesc.forArguments(ret, params); ConstantInfo ci = new ConstantMethodInfo (addConstantClass(className), addConstantNameAndType(methodName, md)); return (ConstantMethodInfo)addConstant(ci); }
/** * Get or create a constant from the constant pool representing an * interface method in any interface. */ public ConstantInterfaceMethodInfo addConstantInterfaceMethod(String className, String methodName, TypeDesc ret, TypeDesc[] params) { MethodDesc md = MethodDesc.forArguments(ret, params); ConstantInfo ci = new ConstantInterfaceMethodInfo (addConstantClass(className), addConstantNameAndType(methodName, md)); return (ConstantInterfaceMethodInfo)addConstant(ci); }
/** * 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; }