Skip to content

Instantly share code, notes, and snippets.

Created August 5, 2011 12:57
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 anonymous/1127487 to your computer and use it in GitHub Desktop.
Save anonymous/1127487 to your computer and use it in GitHub Desktop.
Java 7 String Switch decompiled
Classfile Users/luciano/aestas/blog/new_java7/classes/com/aestasit/java7/StringSwitch.class
Last modified 05-08-2011; size 1039 bytes
MD5 checksum 006a09e98d65c3fb31038131d1ce7297
Compiled from "StringSwitch.java"
public class com.aestasit.java7.StringSwitch
SourceFile: "StringSwitch.java"
minor version: 0
major version: 51
flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
#1 = Methodref #15.#33 // java/lang/Object."<init>":()V
#2 = String #34 // red
#3 = Methodref #35.#36 // java/lang/String.hashCode:()I
#4 = Methodref #35.#37 // java/lang/String.equals:(Ljava/lang/Object;)Z
#5 = String #38 // black
#6 = String #39 // blue
#7 = String #40 // green
#8 = Fieldref #41.#42 // java/lang/System.out:Ljava/io/PrintStream;
#9 = String #43 // IS RED!
#10 = Methodref #44.#45 // java/io/PrintStream.println:(Ljava/lang/String;)V
#11 = String #46 // IS BLACK
#12 = String #47 // IS BLUE
#13 = String #48 // IS GREEN
#14 = Class #49 // com/aestasit/java7/StringSwitch
#15 = Class #50 // java/lang/Object
#16 = Utf8 <init>
#17 = Utf8 ()V
#18 = Utf8 Code
#19 = Utf8 LineNumberTable
#20 = Utf8 LocalVariableTable
#21 = Utf8 this
#22 = Utf8 Lcom/aestasit/java7/StringSwitch;
#23 = Utf8 main
#24 = Utf8 ([Ljava/lang/String;)V
#25 = Utf8 args
#26 = Utf8 [Ljava/lang/String;
#27 = Utf8 color
#28 = Utf8 Ljava/lang/String;
#29 = Utf8 StackMapTable
#30 = Class #51 // java/lang/String
#31 = Utf8 SourceFile
#32 = Utf8 StringSwitch.java
#33 = NameAndType #16:#17 // "<init>":()V
#34 = Utf8 red
#35 = Class #51 // java/lang/String
#36 = NameAndType #52:#53 // hashCode:()I
#37 = NameAndType #54:#55 // equals:(Ljava/lang/Object;)Z
#38 = Utf8 black
#39 = Utf8 blue
#40 = Utf8 green
#41 = Class #56 // java/lang/System
#42 = NameAndType #57:#58 // out:Ljava/io/PrintStream;
#43 = Utf8 IS RED!
#44 = Class #59 // java/io/PrintStream
#45 = NameAndType #60:#61 // println:(Ljava/lang/String;)V
#46 = Utf8 IS BLACK
#47 = Utf8 IS BLUE
#48 = Utf8 IS GREEN
#49 = Utf8 com/aestasit/java7/StringSwitch
#50 = Utf8 java/lang/Object
#51 = Utf8 java/lang/String
#52 = Utf8 hashCode
#53 = Utf8 ()I
#54 = Utf8 equals
#55 = Utf8 (Ljava/lang/Object;)Z
#56 = Utf8 java/lang/System
#57 = Utf8 out
#58 = Utf8 Ljava/io/PrintStream;
#59 = Utf8 java/io/PrintStream
#60 = Utf8 println
#61 = Utf8 (Ljava/lang/String;)V
{
public com.aestasit.java7.StringSwitch();
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 6: 0
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this Lcom/aestasit/java7/StringSwitch;
public static void main(java.lang.String[]);
flags: ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=4, args_size=1
0: ldc #2 // String red
2: astore_1
3: ldc #2 // String red
5: astore_2
6: iconst_m1
7: istore_3
8: aload_2
9: invokevirtual #3 // Method java/lang/String.hashCode:()I
12: lookupswitch { // 4
112785: 56
3027034: 84
93818879: 70
98619139: 98
default: 109
}
56: aload_2
57: ldc #2 // String red
59: invokevirtual #4 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
62: ifeq 109
65: iconst_0
66: istore_3
67: goto 109
70: aload_2
71: ldc #5 // String black
73: invokevirtual #4 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
76: ifeq 109
79: iconst_1
80: istore_3
81: goto 109
84: aload_2
85: ldc #6 // String blue
87: invokevirtual #4 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
90: ifeq 109
93: iconst_2
94: istore_3
95: goto 109
98: aload_2
99: ldc #7 // String green
101: invokevirtual #4 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
104: ifeq 109
107: iconst_3
108: istore_3
109: iload_3
110: tableswitch { // 0 to 3
0: 140
1: 151
2: 162
3: 173
default: 181
}
140: getstatic #8 // Field java/lang/System.out:Ljava/io/PrintStream;
143: ldc #9 // String IS RED!
145: invokevirtual #10 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
148: goto 181
151: getstatic #8 // Field java/lang/System.out:Ljava/io/PrintStream;
154: ldc #11 // String IS BLACK
156: invokevirtual #10 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
159: goto 181
162: getstatic #8 // Field java/lang/System.out:Ljava/io/PrintStream;
165: ldc #12 // String IS BLUE
167: invokevirtual #10 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
170: goto 181
173: getstatic #8 // Field java/lang/System.out:Ljava/io/PrintStream;
176: ldc #13 // String IS GREEN
178: invokevirtual #10 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
181: return
LineNumberTable:
line 10: 0
line 11: 3
line 13: 140
line 14: 148
line 16: 151
line 17: 159
line 19: 162
line 20: 170
line 22: 173
line 26: 181
LocalVariableTable:
Start Length Slot Name Signature
0 182 0 args [Ljava/lang/String;
3 179 1 color Ljava/lang/String;
StackMapTable: number_of_entries = 10
frame_type = 254 /* append */
offset_delta = 56
locals = [ class java/lang/String, class java/lang/String, int ]
frame_type = 13 /* same */
frame_type = 13 /* same */
frame_type = 13 /* same */
frame_type = 10 /* same */
frame_type = 30 /* same */
frame_type = 10 /* same */
frame_type = 10 /* same */
frame_type = 10 /* same */
frame_type = 249 /* chop */
offset_delta = 7
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment