JCK feedback on "Strings in Switch" proposal

Joseph D. Darcy Joe.Darcy at Sun.COM
Sun May 24 12:21:53 PDT 2009

Ulf Zibis wrote:
> Am 19.05.2009 14:42, Dmitry Miltsov schrieb:
>> Hello,
>> The JCK engineers have reviewed the "Strings in switch" proposal
>> and found one issue to clarify.
>> "14.11 The switch Statement" states:
>> ------------------------------------------------------------------
>> ...
>> Otherwise, execution continues by comparing the value of the
>> Expression with each case constant. Then there is a choice:
>> * If one of the case constants is equal to the value of the
>> expression, then we say that the case matches ...
>> ------------------------------------------------------------------
>> It would be good to clarify what "equal" means in case of the
>> String values. It would be useful to mention that in this case
>> the result of comparison will be "expression.equals(constant)",
>> not "expression == constant" as for other types.
> I think it would be better to define "expression == constant" for 
> several reasons.
> (1) "switch..case" syntax historically is expected to be very fast. 
> See discussions on:
>    http://forums.java.net/jive/message.jspa?messageID=4146#4146
>    http://forums.java.net/jive/message.jspa?messageID=14216#14216
>    http://forums.java.net/jive/thread.jspa?threadID=504
> (2) Comparison for identity would better match to legacy semantics of 
> "switch..case" statement.

No, it would not.  Comparing strings for "==" equality is a common 
programming error so the semantics of strings in switch should be 
defined in terms of .equals equality.


More information about the coin-dev mailing list