Skip to content

Instantly share code, notes, and snippets.

@indrabasak
Last active September 24, 2017 20:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save indrabasak/22fd48ea12f5acc224482d2c2278c391 to your computer and use it in GitHub Desktop.
Save indrabasak/22fd48ea12f5acc224482d2c2278c391 to your computer and use it in GitHub Desktop.
Decompile ClassA.class
Classfile /Users/ib/examples/target/classes/example/simple/app/ClassA.class
Last modified Sep 14, 2017; size 1017 bytes
MD5 checksum 60bb1285c34e6284bb32fd9938e30082
Compiled from "ClassA.java"
public class example.simple.app.ClassA
minor version: 0
major version: 52
flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
#1 = Methodref #16.#39 // java/lang/Object."<init>":()V
#2 = Fieldref #15.#40 // example/simple/app/ClassA.myAttrib1:Ljava/lang/String;
#3 = Fieldref #15.#41 // example/simple/app/ClassA.myAttrib2:I
#4 = Class #42 // example/simple/app/ClassB
#5 = Methodref #4.#39 // example/simple/app/ClassB."<init>":()V
#6 = Class #43 // java/lang/StringBuilder
#7 = Methodref #6.#39 // java/lang/StringBuilder."<init>":()V
#8 = String #44 // ClassA.methodX(
#9 = Methodref #6.#45 // java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
#10 = String #46 // ,
#11 = Methodref #6.#47 // java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
#12 = String #48 // ) ->
#13 = Methodref #4.#49 // example/simple/app/ClassB.methodY:()Ljava/lang/String;
#14 = Methodref #6.#50 // java/lang/StringBuilder.toString:()Ljava/lang/String;
#15 = Class #51 // example/simple/app/ClassA
#16 = Class #52 // java/lang/Object
#17 = Utf8 myAttrib1
#18 = Utf8 Ljava/lang/String;
#19 = Utf8 myAttrib2
#20 = Utf8 I
#21 = Utf8 <init>
#22 = Utf8 ()V
#23 = Utf8 Code
#24 = Utf8 LineNumberTable
#25 = Utf8 LocalVariableTable
#26 = Utf8 this
#27 = Utf8 Lexample/simple/app/ClassA;
#28 = Utf8 methodX
#29 = Utf8 (Ljava/lang/String;I)Ljava/lang/String;
#30 = Utf8 param1
#31 = Utf8 param2
#32 = Utf8 bclazz
#33 = Utf8 Lexample/simple/app/ClassB;
#34 = Utf8 strBldr
#35 = Utf8 Ljava/lang/StringBuilder;
#36 = Utf8 retVal
#37 = Utf8 SourceFile
#38 = Utf8 ClassA.java
#39 = NameAndType #21:#22 // "<init>":()V
#40 = NameAndType #17:#18 // myAttrib1:Ljava/lang/String;
#41 = NameAndType #19:#20 // myAttrib2:I
#42 = Utf8 example/simple/app/ClassB
#43 = Utf8 java/lang/StringBuilder
#44 = Utf8 ClassA.methodX(
#45 = NameAndType #53:#54 // append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
#46 = Utf8 ,
#47 = NameAndType #53:#55 // append:(I)Ljava/lang/StringBuilder;
#48 = Utf8 ) ->
#49 = NameAndType #56:#57 // methodY:()Ljava/lang/String;
#50 = NameAndType #58:#57 // toString:()Ljava/lang/String;
#51 = Utf8 example/simple/app/ClassA
#52 = Utf8 java/lang/Object
#53 = Utf8 append
#54 = Utf8 (Ljava/lang/String;)Ljava/lang/StringBuilder;
#55 = Utf8 (I)Ljava/lang/StringBuilder;
#56 = Utf8 methodY
#57 = Utf8 ()Ljava/lang/String;
#58 = Utf8 toString
{
public example.simple.app.ClassA();
descriptor: ()V
flags: ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
LineNumberTable:
line 3: 0
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this Lexample/simple/app/ClassA;
public java.lang.String methodX(java.lang.String, int);
descriptor: (Ljava/lang/String;I)Ljava/lang/String;
flags: ACC_PUBLIC
Code:
stack=2, locals=6, args_size=3
0: aload_0
1: aload_1
2: putfield #2 // Field myAttrib1:Ljava/lang/String;
5: aload_0
6: iload_2
7: putfield #3 // Field myAttrib2:I
10: new #4 // class example/simple/app/ClassB
13: dup
14: invokespecial #5 // Method example/simple/app/ClassB."<init>":()V
17: astore_3
18: new #6 // class java/lang/StringBuilder
21: dup
22: invokespecial #7 // Method java/lang/StringBuilder."<init>":()V
25: astore 4
27: aload 4
29: ldc #8 // String ClassA.methodX(
31: invokevirtual #9 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
34: aload_1
35: invokevirtual #9 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
38: ldc #10 // String ,
40: invokevirtual #9 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
43: iload_2
44: invokevirtual #11 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
47: ldc #12 // String ) ->
49: invokevirtual #9 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
52: aload_3
53: invokevirtual #13 // Method example/simple/app/ClassB.methodY:()Ljava/lang/String;
56: invokevirtual #9 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
59: invokevirtual #14 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
62: astore 5
64: aload 5
66: areturn
LineNumberTable:
line 10: 0
line 11: 5
line 13: 10
line 15: 18
line 16: 27
line 17: 35
line 18: 40
line 19: 44
line 20: 49
line 21: 53
line 23: 64
LocalVariableTable:
Start Length Slot Name Signature
0 67 0 this Lexample/simple/app/ClassA;
0 67 1 param1 Ljava/lang/String;
0 67 2 param2 I
18 49 3 bclazz Lexample/simple/app/ClassB;
27 40 4 strBldr Ljava/lang/StringBuilder;
64 3 5 retVal Ljava/lang/String;
}
SourceFile: "ClassA.java"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment