-
Notifications
You must be signed in to change notification settings - Fork 1.1k
filtering JAVAC.STRINGSWITCH
Evgeny Mandrikov edited this page Jan 9, 2017
·
5 revisions
This page discusses a not yet available feature!
Starting from Java 7 possible to use String
object in the expression of switch
statement. In such case compiler generates additional switch that uses hashCode
and additional conditions that use equals
.
switch (x) {
case "AaAa":
break;
case "BBBB":
break;
}
...
INVOKEVIRTUAL java/lang/String.hashCode ()I
LOOKUPSWITCH
2031744: L1
default: L2
L1
ALOAD 2
LDC "BBBB"
INVOKEVIRTUAL java/lang/String.equals (Ljava/lang/Object;)Z
IFEQ L3
ICONST_1
ISTORE 3
GOTO L2
L3
ALOAD 2
LDC "AaAa"
INVOKEVIRTUAL java/lang/String.equals (Ljava/lang/Object;)Z
IFEQ L2
ICONST_0
ISTORE 3
L2
ILOAD 3
LOOKUPSWITCH
0: L4
1: L5
default: L5
L4
GOTO L5
L5
...