0

这是我的代码:

public static String getLocalLanguage() {
    switch(Lang.valueOf(Locale.getDefault().getCountry().toLowerCase())) {
        case it:
        case de:
        case fr:
        case en:
        case pr:
        case sp:
            return Locale.getDefault().getCountry().toLowerCase();
        default:
            return "it";
    }
}

Lang 是枚举类型

public enum Lang {
    it,en,sp,fr,de,pr
}

当然,我的代码会抛出异常,因为如果我调用 getLocalLanguage 并且 Locale.getDefault 返回一些不存在的 Enum Lang(例如 gb),则会引发异常。

那么我该如何解决这个问题呢?
我的目标是只返回“it”、“de”、“fr”、“en”、“pr”、“sp”,如果 localLanguage 是别的东西,我想返回“it”。
你们能帮我吗?实现这个?

4

2 回答 2

0

尝试这个:

private static final Set<String> LANGUAGES = new HashSet<String>();
static {
    LANGUAGES.add("it");
    ... add the others ...
}

public static String getLocalLanguage() {
    String lang = Locale.getDefault().getCountry().toLowerCase();
    if (LANGUAGES.contains(lang)) {
        return lang;
    }
    return "it";
}
于 2013-08-02T15:26:11.053 回答
0
try {
    Lang lang = Lang.valueOf(Locale.getDefault().getCountry().toLowerCase());
    return lang.toString();
} catch (IllegalArgumentException e) { // Thrown by Lang.valueOf when not found.
    Logger.getLogger(getClass().getName()).info("...");
    return "it";
}
于 2013-08-02T15:34:33.370 回答