java+andriod开发:switch 不能处理字符串类型
时间:2014-07-23 23:16 来源: 我爱IT技术网 作者:山风
今天在使用 java 的 select case 时, 发现 switch 不能处理字符串类型, 真是神奇, 于是我设置了一组 enum, 可是当 emnu.valueOf(string) 里的 string 不存在 enum 里, 又会出错, 使用了一个不在于emnu 里的字符串时错误信息如下:

结论: 当enum 里的项目是固定不变的时候, 使用 switch + enum 会比较好, 当可能项目不存在于 enum 中, 还是乖乖地用 if-else-if 来解决.
enum 里的项目是固定不变的范例: (一个星期的七天)
- public class Main {
- /**
- * @param args the command line arguments
- */
- public static void main(String[] args) {
- String current = args[0];
- Days currentDay = Days.valueOf(current.toUpperCase());
- switch (currentDay) {
- case MONDAY:
- case TUESDAY:
- case WEDNESDAY:
- System.out.println("boring");
- break;
- case THURSDAY:
- System.out.println("getting better");
- case FRIDAY:
- case SATURDAY:
- case SUNDAY:
- System.out.println("much better");
- break;
- }
- }
- public enum Days {
- MONDAY,
- TUESDAY,
- WEDNESDAY,
- THURSDAY,
- FRIDAY,
- SATURDAY,
- SUNDAY
- }
转换 switch case 为 if-else-if 的范例:
- if (trading.equals("Stock Trading")) {
- System.out.println("Trader has selected Stock Trading option");
- } else if (trading.equals("Electronic Trading")) {
- System.out.println("Trader has selected Electronic Trading option");
- } else if (trading.equals("Algorithmic Trading")) {
- System.out.println("Trader has selected Algorithmic Trading option");
- } else if (trading.equals("Foreign exchange trading")) {
- System.out.println("Trader has selected Foreign exchange Trading option");
- } else if (trading.equals("commodity trading")) {
- System.out.println("Trader has selected commodity trading option");
- } else {
- throw new IllegalArgumentException();
- }
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
