मैंने एक बहुत ही सरल वर्ग को संकुचित कर दिया है जो नई जावा 7 स्ट्रिंग स्विच सुविधा का उपयोग करता है।जावा 7 स्ट्रिंग स्विच decompiled: अप्रत्याशित निर्देश
वर्ग:
public class StringSwitch {
public static void main(String[] args) {
final String color = "red";
switch (color) {
case "red":
System.out.println("IS RED!");
break;
case "black":
System.out.println("IS BLACK");
break;
case "blue":
System.out.println("IS BLUE");
break;
case "green":
System.out.println("IS GREEN");
break;
}
}
}
इस वर्ग के खिलाफ जावा 7 "javap" चल रहा है, (पूरा disassembled कोड उपलब्ध है here) निर्देश का एक दिलचस्प सेट उत्पन्न करता है:
public static void main(java.lang.String[]);
flags: ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=4, args_size=1
...
12: lookupswitch { // 4
112785: 56
3027034: 84
93818879: 70
98619139: 98
default: 109
}
56: aload_2
57: ldc #2 // String red
...
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!
...
181: return
" लुकुप्सविच "एक निर्देश है जब स्विच केस स्पैस होता है और टैबलेटविच को प्रतिस्थापित कर सकता है, जो" स्विच "कथन के लिए डिफ़ॉल्ट निर्देश है।
तो सवाल यह है कि हम "लुकस्विच" के बाद "लुकस्विच" क्यों देख रहे हैं?
धन्यवाद लुसियानो
आपके उत्तर के लिए धन्यवाद। यह समझ में आता है। –