Class ClassFile
- java.lang.Object
-
- org.codehaus.janino.util.ClassFile
-
- All Implemented Interfaces:
Annotatable
public class ClassFile extends java.lang.Object implements Annotatable
An object that implements the Java "class file" format.ClassFile(InputStream)reads bytecode from anInputStreamand creates aClassFileobject from it.store(OutputStream)generates JVM bytecode which is suitable for being processed by a Java virtual machine, and writes it to anOutputStream.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classClassFile.AnnotationThe structure of theannotationsarray as described in JVMS8 4.7.16.static classClassFile.AnnotationDefaultAttributeRepresentation of anAnnotationDefaultattribute (see JVMS8 4.7.22).static classClassFile.AnnotationsAttributeRepresentation of aRuntime[In]visibleAnnotationsattribute (see JVMS8 4.7.16/17).static classClassFile.ArrayElementValueRepresentation of the "array_value" structure.static classClassFile.AttributeInfoRepresentation of a class file attribute (see JVMS7 4.7).static classClassFile.BooleanElementValuestatic classClassFile.ByteElementValuestatic classClassFile.CharElementValuestatic classClassFile.ClassElementValuestatic classClassFile.ClassFileExceptionUnchecked exception that represents an error condition that could occur during processing of class files, e.g.static classClassFile.CodeAttributeRepresentation of an unmodifiableCodeattribute, as read from a class file.static classClassFile.ConstantClassInfoSee JVMS7 4.4.1.static classClassFile.ConstantElementValueConvenience class for element values that are constants (as opposed to annotations, enum constants and arrays).static classClassFile.ConstantFieldrefInfoSee JVMS7 4.4.2.static classClassFile.ConstantInterfaceMethodrefInfoSee JVMS7 4.4.2.static classClassFile.ConstantInvokeDynamicInfoSee JVMS7 4.4.10.static classClassFile.ConstantMethodHandleInfoSee JVMS7 4.4.8.static classClassFile.ConstantMethodrefInfoSee JVMS7 4.4.2.static classClassFile.ConstantMethodTypeInfoSee JVMS7 4.4.9.static classClassFile.ConstantNameAndTypeInfoSee JVMS7 4.4.6.static classClassFile.ConstantPoolInfoBase for various the constant pool table entry types.static classClassFile.ConstantUtf8InfoSee JVMS7 4.4.7.static classClassFile.ConstantValueAttributeRepresentation of aConstantValueattribute (see JVMS 4.7.2).static classClassFile.ConstantValuePoolInfoIntermediate base class for constant pool table entry types that have 'value' semantics: Double, Float, Integer, Long, Stringstatic classClassFile.DeprecatedAttributeRepresentation of aDeprecatedattribute (see JVMS 4.7.10).static classClassFile.DoubleElementValuestatic interfaceClassFile.ElementValueRepresentation of the "element_value" structure (see JVMS8 4.7.16.1).static classClassFile.EnumConstValueRepresentation of the "enum_const_value" element in the "element_value" structure.static classClassFile.ExceptionsAttributeRepresentation of anExceptionsattribute (see JVMS 4.7.4).classClassFile.FieldInfoRepresentation of a "method_info" structure, as defined by JVMS7 4.5.static classClassFile.FloatElementValuestatic classClassFile.InnerClassesAttributeRepresentation of anInnerClassesattribute (see JVMS 4.7.5).static classClassFile.IntElementValuestatic classClassFile.LineNumberTableAttributeRepresentation of aLineNumberTableattribute (see JVMS 4.7.8).static classClassFile.LocalVariableTableAttributeRepresentation of aLocalVariableTableattribute (see JVMS 4.7.9).static classClassFile.LongElementValueclassClassFile.MethodInfoRepresentation of a "method_info" structure, as defined by JVMS7 4.6.static classClassFile.ShortElementValuestatic classClassFile.SignatureAttributeRepresentation of aSignatureattribute (see JVMS 4.7.9).static classClassFile.SourceFileAttributeRepresentation of aSourceFileattribute (see JVMS 4.7.7).static classClassFile.StackMapTableAttributeRepresentation of an unmodifiableStackMapTableattribute, as read from a class file.static classClassFile.StringElementValuestatic classClassFile.SyntheticAttributeRepresentation of aSyntheticattribute (see JVMS 4.7.6).
-
Field Summary
Fields Modifier and Type Field Description shortaccessFlagsThe access flags of the class.java.util.List<ClassFile.FieldInfo>fieldInfosTheClassFile.FieldInfos of the field members of this class or interface.short[]interfacesThe constant pool indexes ofClassFile.ConstantClassInfowhich describe the interfaces that this class implements, resp. that this interface extends.static shortMAJOR_VERSION_JDK_1_1Major version number of a class file that was generated by a Java 1.1-compliant compiler.static shortMAJOR_VERSION_JDK_1_10Major version number of a class file that was generated by a Java 1.10-compliant compiler.static shortMAJOR_VERSION_JDK_1_11Major version number of a class file that was generated by a Java 1.11-compliant compiler.static shortMAJOR_VERSION_JDK_1_12Major version number of a class file that was generated by a Java 1.12-compliant compiler.static shortMAJOR_VERSION_JDK_1_2Major version number of a class file that was generated by a Java 1.2-compliant compiler.static shortMAJOR_VERSION_JDK_1_3Major version number of a class file that was generated by a Java 1.3-compliant compiler.static shortMAJOR_VERSION_JDK_1_4Major version number of a class file that was generated by a Java 1.4-compliant compiler.static shortMAJOR_VERSION_JDK_1_5Major version number of a class file that was generated by a Java 1.5-compliant compiler.static shortMAJOR_VERSION_JDK_1_6Major version number of a class file that was generated by a Java 1.6-compliant compiler.static shortMAJOR_VERSION_JDK_1_7Major version number of a class file that was generated by a Java 1.7-compliant compiler.static shortMAJOR_VERSION_JDK_1_8Major version number of a class file that was generated by a Java 1.8-compliant compiler.static shortMAJOR_VERSION_JDK_1_9Major version number of a class file that was generated by a Java 1.9-compliant compiler.java.util.List<ClassFile.MethodInfo>methodInfosTheClassFile.MethodInfos of the methods of this class or interface.static shortMINOR_VERSION_JDK_1_1Minor version number of a class file that was generated by a Java 1.1-compliant compiler.static shortMINOR_VERSION_JDK_1_10Minor version number of a class file that was generated by a Java 1.10-compliant compiler.static shortMINOR_VERSION_JDK_1_11Minor version number of a class file that was generated by a Java 1.11-compliant compiler.static shortMINOR_VERSION_JDK_1_12Minor version number of a class file that was generated by a Java 1.12-compliant compiler.static shortMINOR_VERSION_JDK_1_2Minor version number of a class file that was generated by a Java 1.2-compliant compiler.static shortMINOR_VERSION_JDK_1_3Minor version number of a class file that was generated by a Java 1.3-compliant compiler.static shortMINOR_VERSION_JDK_1_4Minor version number of a class file that was generated by a Java 1.4-compliant compiler.static shortMINOR_VERSION_JDK_1_5Minor version number of a class file that was generated by a Java 1.5-compliant compiler.static shortMINOR_VERSION_JDK_1_6Minor version number of a class file that was generated by a Java 1.6-compliant compiler.static shortMINOR_VERSION_JDK_1_7Minor version number of a class file that was generated by a Java 1.7-compliant compiler.static shortMINOR_VERSION_JDK_1_8Minor version number of a class file that was generated by a Java 1.8-compliant compiler.static shortMINOR_VERSION_JDK_1_9Minor version number of a class file that was generated by a Java 1.9-compliant compiler.shortsuperclassThe constant pool index of theClassFile.ConstantClassInfothat describes the superclass of this class.shortthisClassThe constant pool index of theClassFile.ConstantClassInfothat describes this class.
-
Constructor Summary
Constructors Constructor Description ClassFile(short accessFlags, java.lang.String thisClassFd, java.lang.String superclassFd, java.lang.String[] interfaceFds)Constructs a class with no fields and methods.ClassFile(java.io.InputStream inputStream)Reads "class file" data from the inputStream and construct aClassFileobject from it.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddAnnotationsAttributeEntry(boolean runtimeVisible, java.lang.String fieldDescriptor, java.util.Map<java.lang.Short,ClassFile.ElementValue> elementValuePairs)Creates aRuntime[In]visibleAnnotationsattribute on the class (if it does not yet exist) and adds an entry to it.shortaddConstantClassInfo(java.lang.String typeFd)Returns the constant index number for a "CONSTANT_Class_info" structure to the class file.shortaddConstantDoubleInfo(double value)Adds a "CONSTANT_Double_info" structure to the class file.shortaddConstantFieldrefInfo(java.lang.String classFd, java.lang.String fieldName, java.lang.String fieldFd)Adds a "CONSTANT_Fieldref_info" structure to the class file.shortaddConstantFloatInfo(float value)Adds a "CONSTANT_Float_info" structure to the class file.shortaddConstantIntegerInfo(int value)Adds a "CONSTANT_Integer_info" structure to the class file.shortaddConstantInterfaceMethodrefInfo(java.lang.String classFd, java.lang.String methodName, java.lang.String methodMd)Adds a "CONSTANT_InterfaceMethodref_info" structure to the class file.shortaddConstantLongInfo(long value)Adds a "CONSTANT_Long_info" structure to the class file.shortaddConstantMethodrefInfo(java.lang.String classFd, java.lang.String methodName, java.lang.String methodMd)Adds a "CONSTANT_Methodref_info" structure to the class file.shortaddConstantStringInfo(java.lang.String string)Adds a "CONSTANT_String_info" structure to the class file.shortaddConstantUtf8Info(java.lang.String s)Adds a "CONSTANT_Utf8_info" structure to the class file if no equal entry exists.voidaddDeprecatedAttribute()Adds theDeprecatedattribute to this class.ClassFile.FieldInfoaddFieldInfo(short accessFlags, java.lang.String fieldName, java.lang.String fieldTypeFd, java.lang.Object constantValue)Creates aClassFile.FieldInfoand adds it to this class.voidaddInnerClassesAttributeEntry(ClassFile.InnerClassesAttribute.Entry entry)Creates anInnerClassesattribute if it does not exist, then adds the entry to theInnerClassesattribute.ClassFile.MethodInfoaddMethodInfo(short accessFlags, java.lang.String methodName, MethodDescriptor methodMd)Creates aClassFile.MethodInfoand adds it to this class.voidaddSourceFileAttribute(java.lang.String sourceFileName)Adds aSourceFileattribute to this class file.ClassFile.Annotation[]getAnnotations(boolean runtimeVisible)static java.lang.StringgetClassFileResourceName(java.lang.String className)Constructs the name of a resource that could contain the class file of the class with the className.ClassFile.ConstantClassInfogetConstantClassInfo(short index)ClassFile.ConstantFieldrefInfogetConstantFieldrefInfo(short index)ClassFile.ConstantInterfaceMethodrefInfogetConstantInterfaceMethodrefInfo(short index)ClassFile.ConstantInvokeDynamicInfogetConstantInvokeDynamicInfo(short index)ClassFile.ConstantMethodHandleInfogetConstantMethodHandleInfo(short index)ClassFile.ConstantMethodrefInfogetConstantMethodrefInfo(short index)ClassFile.ConstantMethodTypeInfogetConstantMethodTypeInfo(short index)ClassFile.ConstantNameAndTypeInfogetConstantNameAndTypeInfo(short index)ClassFile.ConstantPoolInfogetConstantPoolInfo(short index)intgetConstantPoolSize()java.lang.StringgetConstantUtf8(short index)Shorthand forgetConstantUtf8Info(index).s.ClassFile.ConstantUtf8InfogetConstantUtf8Info(short index)ClassFile.ConstantValuePoolInfogetConstantValuePoolInfo(short index)ClassFile.InnerClassesAttributegetInnerClassesAttribute()Finds theInnerClassesattribute of this class file.shortgetMajorVersion()shortgetMinorVersion()ClassFile.SignatureAttributegetSignatureAttribute()static java.lang.StringgetSourceResourceName(java.lang.String className)Constructs the name of a resource that could contain the source code of the class with the className.java.lang.StringgetThisClassName()ClassFile.StackMapTableAttribute.ObjectVariableInfonewObjectVariableInfo(java.lang.String fieldDescriptor)ClassFile.StackMapTableAttribute.UninitializedVariableInfonewUninitializedVariableInfo(short offset)voidsetVersion(short majorVersion, short minorVersion)Sets the major and minor class file version numbers (JVMS 4.1).voidstore(java.io.OutputStream os)WritesClassFileto anOutputStream, in "class file" format.byte[]toByteArray()Returns the byte code of thisClassFileas a byte array.java.lang.StringtoString()
-
-
-
Field Detail
-
MAJOR_VERSION_JDK_1_1
public static final short MAJOR_VERSION_JDK_1_1
Major version number of a class file that was generated by a Java 1.1-compliant compiler.- See Also:
- Constant Field Values
-
MINOR_VERSION_JDK_1_1
public static final short MINOR_VERSION_JDK_1_1
Minor version number of a class file that was generated by a Java 1.1-compliant compiler.- See Also:
- Constant Field Values
-
MAJOR_VERSION_JDK_1_2
public static final short MAJOR_VERSION_JDK_1_2
Major version number of a class file that was generated by a Java 1.2-compliant compiler.- See Also:
- Constant Field Values
-
MINOR_VERSION_JDK_1_2
public static final short MINOR_VERSION_JDK_1_2
Minor version number of a class file that was generated by a Java 1.2-compliant compiler.- See Also:
- Constant Field Values
-
MAJOR_VERSION_JDK_1_3
public static final short MAJOR_VERSION_JDK_1_3
Major version number of a class file that was generated by a Java 1.3-compliant compiler.- See Also:
- Constant Field Values
-
MINOR_VERSION_JDK_1_3
public static final short MINOR_VERSION_JDK_1_3
Minor version number of a class file that was generated by a Java 1.3-compliant compiler.- See Also:
- Constant Field Values
-
MAJOR_VERSION_JDK_1_4
public static final short MAJOR_VERSION_JDK_1_4
Major version number of a class file that was generated by a Java 1.4-compliant compiler.- See Also:
- Constant Field Values
-
MINOR_VERSION_JDK_1_4
public static final short MINOR_VERSION_JDK_1_4
Minor version number of a class file that was generated by a Java 1.4-compliant compiler.- See Also:
- Constant Field Values
-
MAJOR_VERSION_JDK_1_5
public static final short MAJOR_VERSION_JDK_1_5
Major version number of a class file that was generated by a Java 1.5-compliant compiler.- See Also:
- Constant Field Values
-
MINOR_VERSION_JDK_1_5
public static final short MINOR_VERSION_JDK_1_5
Minor version number of a class file that was generated by a Java 1.5-compliant compiler.- See Also:
- Constant Field Values
-
MAJOR_VERSION_JDK_1_6
public static final short MAJOR_VERSION_JDK_1_6
Major version number of a class file that was generated by a Java 1.6-compliant compiler.- See Also:
- Constant Field Values
-
MINOR_VERSION_JDK_1_6
public static final short MINOR_VERSION_JDK_1_6
Minor version number of a class file that was generated by a Java 1.6-compliant compiler.- See Also:
- Constant Field Values
-
MAJOR_VERSION_JDK_1_7
public static final short MAJOR_VERSION_JDK_1_7
Major version number of a class file that was generated by a Java 1.7-compliant compiler.- See Also:
- Constant Field Values
-
MINOR_VERSION_JDK_1_7
public static final short MINOR_VERSION_JDK_1_7
Minor version number of a class file that was generated by a Java 1.7-compliant compiler.- See Also:
- Constant Field Values
-
MAJOR_VERSION_JDK_1_8
public static final short MAJOR_VERSION_JDK_1_8
Major version number of a class file that was generated by a Java 1.8-compliant compiler.- See Also:
- Constant Field Values
-
MINOR_VERSION_JDK_1_8
public static final short MINOR_VERSION_JDK_1_8
Minor version number of a class file that was generated by a Java 1.8-compliant compiler.- See Also:
- Constant Field Values
-
MAJOR_VERSION_JDK_1_9
public static final short MAJOR_VERSION_JDK_1_9
Major version number of a class file that was generated by a Java 1.9-compliant compiler.- See Also:
- Constant Field Values
-
MINOR_VERSION_JDK_1_9
public static final short MINOR_VERSION_JDK_1_9
Minor version number of a class file that was generated by a Java 1.9-compliant compiler.- See Also:
- Constant Field Values
-
MAJOR_VERSION_JDK_1_10
public static final short MAJOR_VERSION_JDK_1_10
Major version number of a class file that was generated by a Java 1.10-compliant compiler.- See Also:
- Constant Field Values
-
MINOR_VERSION_JDK_1_10
public static final short MINOR_VERSION_JDK_1_10
Minor version number of a class file that was generated by a Java 1.10-compliant compiler.- See Also:
- Constant Field Values
-
MAJOR_VERSION_JDK_1_11
public static final short MAJOR_VERSION_JDK_1_11
Major version number of a class file that was generated by a Java 1.11-compliant compiler.- See Also:
- Constant Field Values
-
MINOR_VERSION_JDK_1_11
public static final short MINOR_VERSION_JDK_1_11
Minor version number of a class file that was generated by a Java 1.11-compliant compiler.- See Also:
- Constant Field Values
-
MAJOR_VERSION_JDK_1_12
public static final short MAJOR_VERSION_JDK_1_12
Major version number of a class file that was generated by a Java 1.12-compliant compiler.- See Also:
- Constant Field Values
-
MINOR_VERSION_JDK_1_12
public static final short MINOR_VERSION_JDK_1_12
Minor version number of a class file that was generated by a Java 1.12-compliant compiler.- See Also:
- Constant Field Values
-
accessFlags
public final short accessFlags
The access flags of the class.- See Also:
and consorts
-
thisClass
public final short thisClass
The constant pool index of theClassFile.ConstantClassInfothat describes this class.
-
superclass
public final short superclass
The constant pool index of theClassFile.ConstantClassInfothat describes the superclass of this class. Zero for classObject,Objectfor interfaces.- See Also:
- "JVMS11 4.1, The ClassFile Structure"
-
interfaces
public final short[] interfaces
The constant pool indexes ofClassFile.ConstantClassInfowhich describe the interfaces that this class implements, resp. that this interface extends.
-
fieldInfos
public final java.util.List<ClassFile.FieldInfo> fieldInfos
TheClassFile.FieldInfos of the field members of this class or interface.
-
methodInfos
public final java.util.List<ClassFile.MethodInfo> methodInfos
TheClassFile.MethodInfos of the methods of this class or interface.
-
-
Constructor Detail
-
ClassFile
public ClassFile(short accessFlags, java.lang.String thisClassFd, @Nullable java.lang.String superclassFd, java.lang.String[] interfaceFds)Constructs a class with no fields and methods. An application would typically add fields and methods before saving it.By default, the .class file major and minor version are that of the currently executing JVM (system property
"java.class.version").- Parameters:
accessFlags- As defined byModthisClassFd- The field descriptor for this classsuperclassFd- The field descriptor for the extended class (e.g. "Ljava/lang/Object;");nullforObjectinterfaceFds- The field descriptors for the implemented interfaces- See Also:
setVersion(short, short),addFieldInfo(short, String, String, Object),addMethodInfo(short, String, MethodDescriptor)
-
ClassFile
public ClassFile(java.io.InputStream inputStream) throws java.io.IOExceptionReads "class file" data from the inputStream and construct aClassFileobject from it.If the
ClassFileis created with this constructor, then most modifying operations lead to aUnsupportedOperationException; only fields, methods and attributes can be added.- Throws:
java.io.IOException
-
-
Method Detail
-
addSourceFileAttribute
public void addSourceFileAttribute(java.lang.String sourceFileName)
Adds aSourceFileattribute to this class file. (Does not check whether one exists already.)- Parameters:
sourceFileName-
-
addDeprecatedAttribute
public void addDeprecatedAttribute()
Adds theDeprecatedattribute to this class.
-
getInnerClassesAttribute
@Nullable public ClassFile.InnerClassesAttribute getInnerClassesAttribute()
Finds theInnerClassesattribute of this class file.- Returns:
nullif this class has no "InnerClasses" attribute
-
getSignatureAttribute
@Nullable public ClassFile.SignatureAttribute getSignatureAttribute()
-
addInnerClassesAttributeEntry
public void addInnerClassesAttributeEntry(ClassFile.InnerClassesAttribute.Entry entry)
Creates anInnerClassesattribute if it does not exist, then adds the entry to theInnerClassesattribute.
-
getAnnotations
public ClassFile.Annotation[] getAnnotations(boolean runtimeVisible)
- Specified by:
getAnnotationsin interfaceAnnotatable- Returns:
- The annotations on this element; an empty array iff there are no annotations
-
addAnnotationsAttributeEntry
public void addAnnotationsAttributeEntry(boolean runtimeVisible, java.lang.String fieldDescriptor, java.util.Map<java.lang.Short,ClassFile.ElementValue> elementValuePairs)Creates aRuntime[In]visibleAnnotationsattribute on the class (if it does not yet exist) and adds an entry to it.- Specified by:
addAnnotationsAttributeEntryin interfaceAnnotatable- Parameters:
elementValuePairs- Maps element-name constant-pool-index (ClassFile.ConstantUtf8Info) to element value
-
getThisClassName
public java.lang.String getThisClassName()
- Returns:
- The fully qualified name of this class, e.g. "pkg1.pkg2.Outer$Inner"
-
setVersion
public void setVersion(short majorVersion, short minorVersion)Sets the major and minor class file version numbers (JVMS 4.1).ClassFiledeclares a set of valid major-minor version number pairs, e.g.MAJOR_VERSION_JDK_1_6andMINOR_VERSION_JDK_1_6.
-
getMajorVersion
public short getMajorVersion()
- Returns:
- The current major class file version number
-
getMinorVersion
public short getMinorVersion()
- Returns:
- The current minor class file version number
-
addConstantClassInfo
public short addConstantClassInfo(java.lang.String typeFd)
Returns the constant index number for a "CONSTANT_Class_info" structure to the class file. If the class hasn't been added before, adds it to the constant pool. Otherwise returns the constant number for that element of the pool.- See Also:
- JVM specification, section 4.4.1
-
addConstantFieldrefInfo
public short addConstantFieldrefInfo(java.lang.String classFd, java.lang.String fieldName, java.lang.String fieldFd)Adds a "CONSTANT_Fieldref_info" structure to the class file.- See Also:
- JVM specification, section 4.4.2
-
addConstantMethodrefInfo
public short addConstantMethodrefInfo(java.lang.String classFd, java.lang.String methodName, java.lang.String methodMd)Adds a "CONSTANT_Methodref_info" structure to the class file.- See Also:
- JVM specification, section 4.4.2
-
addConstantInterfaceMethodrefInfo
public short addConstantInterfaceMethodrefInfo(java.lang.String classFd, java.lang.String methodName, java.lang.String methodMd)Adds a "CONSTANT_InterfaceMethodref_info" structure to the class file.- See Also:
- JVM specification, section 4.4.2
-
addConstantStringInfo
public short addConstantStringInfo(java.lang.String string)
Adds a "CONSTANT_String_info" structure to the class file.- See Also:
- JVM specification, section 4.4.3
-
addConstantIntegerInfo
public short addConstantIntegerInfo(int value)
Adds a "CONSTANT_Integer_info" structure to the class file.- See Also:
- JVM specification, section 4.4.4
-
addConstantFloatInfo
public short addConstantFloatInfo(float value)
Adds a "CONSTANT_Float_info" structure to the class file.- See Also:
- JVM specification, section 4.4.4
-
addConstantLongInfo
public short addConstantLongInfo(long value)
Adds a "CONSTANT_Long_info" structure to the class file.- See Also:
- JVM specification, section 4.4.5
-
addConstantDoubleInfo
public short addConstantDoubleInfo(double value)
Adds a "CONSTANT_Double_info" structure to the class file.- See Also:
- JVM specification, section 4.4.5
-
addConstantUtf8Info
public short addConstantUtf8Info(java.lang.String s)
Adds a "CONSTANT_Utf8_info" structure to the class file if no equal entry exists.- Returns:
- The index of the already existing or newly created entry
- See Also:
- JVM specification, section 4.4.7
-
addFieldInfo
public ClassFile.FieldInfo addFieldInfo(short accessFlags, java.lang.String fieldName, java.lang.String fieldTypeFd, @Nullable java.lang.Object constantValue)
Creates aClassFile.FieldInfoand adds it to this class. The return value can be used e.g. to add attributes (Deprecated, ...) to the field.
-
addMethodInfo
public ClassFile.MethodInfo addMethodInfo(short accessFlags, java.lang.String methodName, MethodDescriptor methodMd)
Creates aClassFile.MethodInfoand adds it to this class. The return value can be used e.g. to add attributes (Code,Deprecated,Exceptions, ...) to the method.
-
getConstantPoolInfo
public ClassFile.ConstantPoolInfo getConstantPoolInfo(short index)
- Returns:
- The (read-only) constant pool entry indexed by index
- Throws:
ClassFile.ClassFileException- index is invalid
-
getConstantClassInfo
public ClassFile.ConstantClassInfo getConstantClassInfo(short index)
- Returns:
- The (read-only) constant class info indexed by index
-
getConstantFieldrefInfo
public ClassFile.ConstantFieldrefInfo getConstantFieldrefInfo(short index)
- Returns:
- The (read-only) constant fieldref info indexed by index
-
getConstantInterfaceMethodrefInfo
public ClassFile.ConstantInterfaceMethodrefInfo getConstantInterfaceMethodrefInfo(short index)
- Returns:
- The (read-only) constant interface methodref info indexed by index
-
getConstantInvokeDynamicInfo
public ClassFile.ConstantInvokeDynamicInfo getConstantInvokeDynamicInfo(short index)
- Returns:
- The (read-only) constant invoke dynamic info indexed by index
-
getConstantMethodHandleInfo
public ClassFile.ConstantMethodHandleInfo getConstantMethodHandleInfo(short index)
- Returns:
- The (read-only) constant method handle info indexed by index
-
getConstantMethodrefInfo
public ClassFile.ConstantMethodrefInfo getConstantMethodrefInfo(short index)
- Returns:
- The (read-only) constant methodref info indexed by index
-
getConstantMethodTypeInfo
public ClassFile.ConstantMethodTypeInfo getConstantMethodTypeInfo(short index)
- Returns:
- The (read-only) constant method type info indexed by index
-
getConstantNameAndTypeInfo
public ClassFile.ConstantNameAndTypeInfo getConstantNameAndTypeInfo(short index)
- Returns:
- The (read-only) constant name and type info indexed by index
-
getConstantUtf8Info
public ClassFile.ConstantUtf8Info getConstantUtf8Info(short index)
- Returns:
- The (read-only) constant utf8 info indexed by index
-
getConstantValuePoolInfo
public ClassFile.ConstantValuePoolInfo getConstantValuePoolInfo(short index)
- Returns:
- The (read-only) constant value pool info indexed by index
-
getConstantPoolSize
public int getConstantPoolSize()
- Returns:
- The size of the constant pool
-
getConstantUtf8
public java.lang.String getConstantUtf8(short index)
Shorthand forgetConstantUtf8Info(index).s.- Parameters:
index- Index to aCONSTANT_Utf8_infoin the constant pool- Returns:
- The string represented by the structure
-
store
public void store(java.io.OutputStream os) throws java.io.IOExceptionWritesClassFileto anOutputStream, in "class file" format.Notice that if an
IOExceptionis thrown, the class file is probably written incompletely and thus invalid. The calling method must take care of this situation, e.g. by closing the output stream and then deleting the file.- Throws:
java.io.IOException
-
getSourceResourceName
public static java.lang.String getSourceResourceName(java.lang.String className)
Constructs the name of a resource that could contain the source code of the class with the className.Notice that member types are declared inside a different type, so the relevant source file is that of the outermost declaring class.
- Parameters:
className- Fully qualified class name, e.g."pkg1.pkg2.Outer$Inner"- Returns:
- the name of the resource, e.g.
"pkg1/pkg2/Outer.java"
-
getClassFileResourceName
public static java.lang.String getClassFileResourceName(java.lang.String className)
Constructs the name of a resource that could contain the class file of the class with the className.- Parameters:
className- Fully qualified class name, e.g. "pkg1.pkg2.Outer$Inner"- Returns:
- the name of the resource, e.g. "pkg1/pkg2/Outer$Inner.class"
-
toByteArray
public byte[] toByteArray()
Returns the byte code of thisClassFileas a byte array.
-
newObjectVariableInfo
public ClassFile.StackMapTableAttribute.ObjectVariableInfo newObjectVariableInfo(java.lang.String fieldDescriptor)
-
newUninitializedVariableInfo
public ClassFile.StackMapTableAttribute.UninitializedVariableInfo newUninitializedVariableInfo(short offset)
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-