org.codehaus.janino.util
public class ClassFile extends Object
ClassFile creates a ClassFile object from the bytecode read from the given InputStream.
store generates JavaTM bytecode which is suitable for being processed by a JavaTM virtual machine.
Nested Class Summary | |
---|---|
abstract static class | ClassFile.AttributeInfo
Representation of a class file attribute (see JVMS 4.7). |
static class | ClassFile.ConstantClassInfo |
static class | ClassFile.ConstantFieldrefInfo |
static class | ClassFile.ConstantInterfaceMethodrefInfo |
static class | ClassFile.ConstantMethodrefInfo |
static class | ClassFile.ConstantNameAndTypeInfo |
abstract static class | ClassFile.ConstantPoolInfo |
static class | ClassFile.ConstantUtf8Info |
static class | ClassFile.ConstantValueAttribute
Representation of a "ConstantValue" attribute (see JVMS 4.7.2). |
abstract static class | ClassFile.ConstantValuePoolInfo |
static class | ClassFile.DeprecatedAttribute
Representation of a "Deprecated" attribute (see JVMS 4.7.10). |
static class | ClassFile.ExceptionsAttribute
Representation of an "Exceptions" attribute (see JVMS 4.7.4). |
static class | ClassFile.FieldInfo |
static class | ClassFile.InnerClassesAttribute
Representation of an "InnerClasses" attribute (see JVMS 4.7.5). |
static class | ClassFile.LineNumberTableAttribute
Representation of a "LineNumberTable" attribute (see JVMS 4.7.8). |
static class | ClassFile.LocalVariableTableAttribute
Representation of a "LocalVariableTable" attribute (see JVMS 4.7.9). |
class | ClassFile.MethodInfo
This class represents a "method_info" structure, as defined by the
JVM specification. |
static class | ClassFile.SourceFileAttribute
Representation of a "SourceFile" attribute (see JVMS 4.7.7). |
static class | ClassFile.SyntheticAttribute
Representation of a "Synthetic" attribute (see JVMS 4.7.6). |
Field Summary | |
---|---|
short | accessFlags |
List | constantPool |
List | fieldInfos |
short[] | interfaces |
List | methodInfos |
static short | MAJOR_VERSION_JDK_1_1 |
static short | MAJOR_VERSION_JDK_1_2 |
static short | MAJOR_VERSION_JDK_1_3 |
static short | MAJOR_VERSION_JDK_1_4 |
static short | MAJOR_VERSION_JDK_1_5 |
static short | MINOR_VERSION_JDK_1_1 |
static short | MINOR_VERSION_JDK_1_2 |
static short | MINOR_VERSION_JDK_1_3 |
static short | MINOR_VERSION_JDK_1_4 |
static short | MINOR_VERSION_JDK_1_5 |
short | superclass |
short | thisClass |
Constructor Summary | |
---|---|
ClassFile(short accessFlags, String thisClassFD, String superclassFD, String[] interfaceFDs)
Construct from parsed components. | |
ClassFile(InputStream inputStream)
Read "class file" data from a InputStream and construct a
ClassFile object from it.
|
Method Summary | |
---|---|
short | addConstantClassInfo(String typeFD)
Add a "CONSTANT_Class_info" structure to the class file.
|
short | addConstantDoubleInfo(double value)
Add a "CONSTANT_Double_info" structure to the class file.
|
short | addConstantFieldrefInfo(String classFD, String fieldName, String fieldFD)
Add a "CONSTANT_Fieldref_info" structure to the class file.
|
short | addConstantFloatInfo(float value)
Add a "CONSTANT_Float_info" structure to the class file.
|
short | addConstantIntegerInfo(int value)
Add a "CONSTANT_Integer_info" structure to the class file.
|
short | addConstantInterfaceMethodrefInfo(String classFD, String methodName, String methodMD)
Add a "CONSTANT_InterfaceMethodref_info" structure to the class file.
|
short | addConstantLongInfo(long value)
Add a "CONSTANT_Long_info" structure to the class file.
|
short | addConstantMethodrefInfo(String classFD, String methodName, String methodMD)
Add a "CONSTANT_Methodref_info" structure to the class file.
|
short | addConstantStringInfo(String string)
Add a "CONSTANT_String_info" structure to the class file.
|
short | addConstantUtf8Info(String s)
Add a "CONSTANT_Utf8_info" structure to the class file.
|
void | addDeprecatedAttribute() |
ClassFile.FieldInfo | addFieldInfo(short accessFlags, String fieldName, String fieldTypeFD, Object optionalConstantValue) |
void | addInnerClassesAttributeEntry(ClassFile.InnerClassesAttribute.Entry e)
Create an "InnerClasses" attribute if it does not exist, then add the given entry
to the "InnerClasses" attribute. |
ClassFile.MethodInfo | addMethodInfo(short accessFlags, String methodName, String methodMD) |
void | addSourceFileAttribute(String sourceFileName)
Adds a "SourceFile" attribute to this class file. |
static String | getClassFileResourceName(String className)
Construct the name of a resource that could contain the class file of the
class with the given name.
|
String | getConstantClassName(short index) |
ClassFile.ConstantPoolInfo | getConstantPoolInfo(short index) |
String | getConstantUtf8(short index) |
ClassFile.InnerClassesAttribute | getInnerClassesAttribute()
Find the "InnerClasses" attribute of this class file |
short | getMajorVersion()
Returns the current major class file version number. |
short | getMinorVersion()
Returns the current minor class file version number. |
static String | getSourceResourceName(String className)
Construct the name of a resource that could contain the source code of
the class with the given name.
|
String | getThisClassName() |
static boolean | isRecognizedVersion(short majorVersion, short minorVersion) |
void | setVersion(short majorVersion, short minorVersion)
Sets the major and minor class file version numbers (JVMS 4.1). |
void | store(OutputStream os)
Write ClassFile to an OutputStream, in "class file" format.
|
byte[] | toByteArray()
Return the byte code of this ClassFile as a byte array. |
Parameters: accessFlags as defined by Mod thisClassFD the field descriptor for this class superclassFD the field descriptor for the extended class (e.g. "Ljava/lang/Object;") interfaceFDs the field descriptors for the implemented interfaces
If the ClassFile is created with this constructor, then most modifying operations lead to a UnsupportedOperationException; only fields, methods and attributes can be added.
Parameters: inputStream
Throws: IOException ClassFormatError
See Also: JVM specification, section 4.4.1
See Also: JVM specification, section 4.4.5
See Also: JVM specification, section 4.4.2
See Also: JVM specification, section 4.4.4
See Also: JVM specification, section 4.4.4
See Also: JVM specification, section 4.4.2
See Also: JVM specification, section 4.4.5
See Also: JVM specification, section 4.4.2
See Also: JVM specification, section 4.4.3
See Also: JVM specification, section 4.4.7
Parameters: e
Parameters: sourceFileName
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"
Parameters: index Index to a CONSTANT_Class_info
in the constant pool
Returns: The name of the denoted class in "internal form" (see JVMS 4.2)
Parameters: index Index to a CONSTANT_Utf8_info
in the constant pool
Returns: The string represented by the structure
Returns: null
if this class has no "InnerClasses" attribute
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"
Returns: The fully qualified name of this class, e.g. "pkg1.pkg2.Outer$Inner"
Parameters: majorVersion minorVersion
Notice that if an IOException is 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.
Parameters: os
Throws: IOException