String switchString = e.getActionComand();
      switch (switchString) {
问题的来源就是这里

解决方案 »

  1.   

    Java 1.7就可以了 等等吧
      

  2.   

    switch暂时只接受int short char等等,好像不能接受string,jdk1.7好像可以
      

  3.   


    (1)枚举限制太大,要事先定义好所有的String常量。对于一些运行时才知道结果的程序不现实。(2)hashCode理论上可以,这种方法是想把String转换成int类型以应付switch的要求,但实际不可行。
       因为case语句中需要常量表达式,下面的写法编译都通过不了:
                  String str="张";
                  switch(str.hashCode()){
                        case "张".hashCode() : .... ;break;
                        case "李".hashCode() : .... ;break;
                        .....
                  };所以,我认为枚举方法是唯一可行的,至少我现在还不知道有没有其他的办法。关注中....
      

  4.   

    我修正一下刚才的回复(7楼)(2) hashCode是可以的,只要在case语句中加入"张"字符串的具体hashCode常量值即可。case 123 : ...; break;  //假设123是"张"的hashCode
      

  5.   

    你都使用上switch了,难道你会不知道有哪些case?假如case已知,那enum也就可行。我只是就楼主的问题做回答,代码的可诗性不在考虑之内。
      

  6.   

    额,.NET的C#已经支持了
    JAVA也只支持LONG类型以下的原始类型
      

  7.   

    是的JDK 1.7可以.
    但是要等好久.