有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用枚举或字符串的java Switch语句

使用该开关的最佳方式是什么,因为我知道与Enum一起使用的开关是一种更具可读性和安全性的类型(正如OCP Book所说),所以对于常量值,使用带有Enum的switch语句更好,但是在这里,当我使用带字符串的开关而不是Enum来读取java.util.Calendarjava时

    public Calendar build() {
         ...
        switch (type) {
        case "gregory":
            cal = new GregorianCalendar(zone, locale, true);
            break;
        case "iso8601":
            GregorianCalendar gcal = new GregorianCalendar(zone, locale, true);
            gcal.setGregorianChange(new Date(Long.MIN_VALUE));
            setWeekDefinition(MONDAY, 4);
            cal = gcal;
            break;
        case "buddhist":
            cal = new BuddhistCalendar(zone, locale);
            cal.clear();
            break;
        case "japanese":
            cal = new JapaneseImperialCalendar(zone, locale, true);
            break;
        default:
            throw new IllegalArgumentException("unknown calendar type: " + type);
        }
   ...
        return cal;
    }

共 (1) 个答案

  1. # 1 楼答案

    当然,使用整数常量或枚举更好。比较字符串时,性能较低。此外,编写原始字符串是不好的,因为如果字符串发生变化,我们将进行错误的比较

    谢谢你给我举了一个贫困阶层发展的例子。我们可以see知道"gregory"在许多地方被用在内部,而不是作为常数赋值