class ClassDump
extends java.lang.Object
magic: -889275714 minor_version: 0 major_version: 49 access_flags: 33 this_class: ConstantClassInfo HelloWorld super_class: ConstantClassInfo java/lang/Object interfaces_count: 0 fields_count: 0 methods_count: 2 access_flags: 1 name_index: <init> descriptor_index: ()V attributes_count: 1 attribute_name_index: Code max_stack: 1 max_locals: 1 0: 25 0 1: 183 ConstantMethodRefInfo java/lang/Object.<init>()V 2: 177 exception_table_length: 0 attributes_count: 2 attribute_name_index: LineNumberTable line_number_table_length: 1 start_pc: <0> line_number: 31 attribute_name_index: LocalVariableTable local_variable_table_length: 1 start_pc: <0> length: <3> name_index: this descriptor_index: LHelloWorld; index: 0 access_flags: 9 name_index: main descriptor_index: ([Ljava/lang/String;)V attributes_count: 1 attribute_name_index: Code max_stack: 2 max_locals: 1 0: 178 ConstantFieldRefInfo java/lang/System.outLjava/io/PrintStream; 1: 18 ConstantStringInfo Hello, world! 2: 182 ConstantMethodRefInfo java/io/PrintStream.println(Ljava/lang/String;)V 3: 177 exception_table_length: 0 attributes_count: 2 attribute_name_index: LineNumberTable line_number_table_length: 2 start_pc: <0> line_number: 33 start_pc: <3> line_number: 34 attribute_name_index: LocalVariableTable local_variable_table_length: 1 start_pc: <0> length: <4> name_index: args descriptor_index: [Ljava/lang/String; index: 0 attributes_count: 1 attribute_name_index: SourceFile sourcefile_index: HelloWorld.java
This class is used to compare classes in unit tests. Its source code is as close as possible to the Java Virtual Machine specification for ease of reference. The constant pool and bytecode offsets are abstracted away so that two classes which differ only by their constant pool or low level byte code instruction representation (e.g. a ldc vs. a ldc_w) are still considered equal. Likewise, attributes (resp. type annotations) are re-ordered into alphabetical order, so that two classes which differ only via the ordering of their attributes (resp. type annotations) are still considered equal.
Modifier and Type | Class and Description |
---|---|
private static class |
ClassDump.AbstractBuilder<T>
A helper class to build the dump of a class file.
|
private static class |
ClassDump.Builder
An
ClassDump.AbstractBuilder with concrete methods to add children. |
private static interface |
ClassDump.ClassContext
A context to lookup constant pool items from their index.
|
private static class |
ClassDump.ConstantClassInfo
A CONSTANT_Class_info item.
|
private static class |
ClassDump.ConstantDoubleInfo
A CONSTANT_Double_info item.
|
private static class |
ClassDump.ConstantDynamicInfo
A CONSTANT_Dynamic_info item.
|
private static class |
ClassDump.ConstantFieldRefInfo
A CONSTANT_Fieldref_info item.
|
private static class |
ClassDump.ConstantFloatInfo
A CONSTANT_Float_info item.
|
private static class |
ClassDump.ConstantIntegerInfo
A CONSTANT_Integer_info item.
|
private static class |
ClassDump.ConstantInterfaceMethodRefInfo
A CONSTANT_InterfaceMethodref_info item.
|
private static class |
ClassDump.ConstantInvokeDynamicInfo
A CONSTANT_InvokeDynamic_info item.
|
private static class |
ClassDump.ConstantLongInfo
A CONSTANT_Long_info item.
|
private static class |
ClassDump.ConstantMethodHandleInfo
A CONSTANT_MethodHandle_info item.
|
private static class |
ClassDump.ConstantMethodRefInfo
A CONSTANT_Methodref_info item.
|
private static class |
ClassDump.ConstantMethodTypeInfo
A CONSTANT_MethodType_info item.
|
private static class |
ClassDump.ConstantModuleInfo
A CONSTANT_Module_info item.
|
private static class |
ClassDump.ConstantNameAndTypeInfo
A CONSTANT_NameAndType_info item.
|
private static class |
ClassDump.ConstantPackageInfo
A CONSTANT_Package_info item.
|
private static class |
ClassDump.ConstantStringInfo
A CONSTANT_String_info item.
|
private static class |
ClassDump.ConstantUtf8Info
A CONSTANT_Utf8_info item.
|
private static class |
ClassDump.CpInfo
An abstract constant pool item.
|
private static class |
ClassDump.InstructionIndex
The index of a bytecode instruction.
|
private static interface |
ClassDump.MethodContext
A context to lookup instruction indices from their bytecode offset.
|
private static class |
ClassDump.Parser
A simple byte array parser.
|
private static class |
ClassDump.SortedBuilder
An
ClassDump.AbstractBuilder which sorts its children by name before building. |
Modifier and Type | Field and Description |
---|---|
private java.lang.String |
dump
The dump of the input class.
|
Constructor and Description |
---|
ClassDump(byte[] bytecode)
Constructs a new ClassDump instance.
|
Modifier and Type | Method and Description |
---|---|
private static void |
dumpAnnotation(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps an annotations structure.
|
private static void |
dumpAnnotationDefaultAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps an AnnotationDefault attribute.
|
private static void |
dumpAttributeInfo(ClassDump.Parser parser,
ClassDump.SortedBuilder sortedBuilder)
Parses and dumps an attribute_info structure.
|
private static void |
dumpAttributeList(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a list of attributes.
|
private static void |
dumpBootstrapMethodsAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a BootstrapMethods attribute.
|
private static void |
dumpClassFile(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps the high level structure of the class.
|
private static void |
dumpCodeAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a Code attribute.
|
private static void |
dumpConstantValueAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a ConstantValue attribute.
|
private static void |
dumpDeprecatedAttribute()
Parses and dumps a Deprecated attribute.
|
private static void |
dumpElementValue(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps an element_value structure.
|
private static void |
dumpEnclosingMethodAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps an EnclosingMethod attribute.
|
private static void |
dumpExceptionsAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps an Exception attribute.
|
private static void |
dumpFieldInfo(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a field_info structure.
|
private static void |
dumpInnerClassesAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps an InnerClasses attribute.
|
private static void |
dumpInstructions(int codeLength,
ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps the bytecode instructions of a method.
|
private static void |
dumpLineNumberTableAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a LineNumberTable attribute.
|
private static void |
dumpLocalVariableTableAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a LocalVariableTable attribute.
|
private static void |
dumpLocalVariableTypeTableAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a LocalVariableTypeTable attribute.
|
private static void |
dumpMethodInfo(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a method_info structure.
|
private static void |
dumpMethodParametersAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a MethodParameters attribute.
|
private static void |
dumpModuleAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a Module attribute.
|
private static void |
dumpModuleMainClassAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a ModuleMainClass attribute.
|
private static void |
dumpModulePackagesAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a ModulePackages attribute.
|
private static void |
dumpNestHostAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a NestHost attribute.
|
private static void |
dumpNestMembersAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a NestMembers attribute.
|
private static void |
dumpRuntimeInvisibleAnnotationsAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a RuntimeInvisibleAnnotations attribute.
|
private static void |
dumpRuntimeInvisibleParameterAnnotationsAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a RuntimeInvisibleParameterAnnotations attribute.
|
private static void |
dumpRuntimeInvisibleTypeAnnotationsAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a RuntimeInvisibleTypeAnnotations attribute.
|
private static void |
dumpRuntimeVisibleAnnotationsAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a RuntimeVisibleAnnotations attribute.
|
private static void |
dumpRuntimeVisibleParameterAnnotationsAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a RuntimeVisibleParameterAnnotations attribute.
|
private static void |
dumpRuntimeVisibleTypeAnnotationsAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a RuntimeVisibleTypeAnnotations attribute.
|
private static void |
dumpSignatureAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a Signature attribute.
|
private static void |
dumpSourceDebugAttribute(int attributeLength,
ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a SourceDebug attribute.
|
private static void |
dumpSourceFileAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a SourceFile attribute.
|
private static void |
dumpStackMapAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a StackMap attribute.
|
private static void |
dumpStackMapTableAttribute(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a StackMapTable attribute.
|
private static void |
dumpSyntheticAttribute()
Parses and dumps a Synthetic attribute.
|
private static void |
dumpTypeAnnotation(ClassDump.Parser parser,
ClassDump.SortedBuilder sortedBuilder)
Parses and dumps a type_annotation structure.
|
private static void |
dumpTypePath(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a type_path structure.
|
private static void |
dumpVerificationTypeInfo(ClassDump.Parser parser,
ClassDump.Builder builder)
Parses and dumps a verification_type_info structure.
|
private static ClassDump.CpInfo |
parseCpInfo(ClassDump.Parser parser,
ClassDump.ClassContext classContext)
Parses a cp_info structure.
|
java.lang.String |
toString() |
ClassDump(byte[] bytecode) throws java.io.IOException
toString()
.bytecode
- the content of a class file.java.io.IOException
- if the class can't be parsed.public java.lang.String toString()
toString
in class java.lang.Object
private static void dumpClassFile(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpAttributeList(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static ClassDump.CpInfo parseCpInfo(ClassDump.Parser parser, ClassDump.ClassContext classContext) throws java.io.IOException
parser
- a class parser.classContext
- a context to lookup constant pool items from their index.java.io.IOException
- if the class can't be parsed.private static void dumpFieldInfo(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpMethodInfo(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpAttributeInfo(ClassDump.Parser parser, ClassDump.SortedBuilder sortedBuilder) throws java.io.IOException
parser
- a class parser.sortedBuilder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpConstantValueAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpCodeAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpInstructions(int codeLength, ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
codeLength
- the number of bytes to parse.parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpStackMapTableAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpVerificationTypeInfo(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpExceptionsAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpInnerClassesAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpEnclosingMethodAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpSyntheticAttribute()
private static void dumpSignatureAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpSourceFileAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpSourceDebugAttribute(int attributeLength, ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
attributeLength
- the length of the SourceDebug attribute (excluding its 6 header bytes).parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpLineNumberTableAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpLocalVariableTableAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpLocalVariableTypeTableAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpDeprecatedAttribute()
private static void dumpRuntimeVisibleAnnotationsAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpAnnotation(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpElementValue(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpRuntimeInvisibleAnnotationsAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpRuntimeVisibleParameterAnnotationsAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpRuntimeInvisibleParameterAnnotationsAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpRuntimeVisibleTypeAnnotationsAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpTypeAnnotation(ClassDump.Parser parser, ClassDump.SortedBuilder sortedBuilder) throws java.io.IOException
parser
- a class parser.sortedBuilder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpTypePath(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpRuntimeInvisibleTypeAnnotationsAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpAnnotationDefaultAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpBootstrapMethodsAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpMethodParametersAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpModuleAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpModulePackagesAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpModuleMainClassAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpNestHostAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpNestMembersAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.private static void dumpStackMapAttribute(ClassDump.Parser parser, ClassDump.Builder builder) throws java.io.IOException
parser
- a class parser.builder
- a dump builder.java.io.IOException
- if the class can't be parsed.