2013-08-02 112 views
0

这是我的代码:接通枚举抛出:IllegalArgumentException -

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"; 
    } 
} 

朗是一个枚举类型

​​

当然我的代码将抛出Exeception,因为如果我叫getLocalLanguage和Locale.getDefault回报一些不存在的Enum Lang(例如gb)会引起怀疑。

那么我该如何解决这个问题?
我的目标是返回“it”,“de”,“fr”,“en”,“pr”,“sp”,如果localLanguage是其他我想返回的“it”..
你可以吗大家帮我做到这一点?

+1

这是Java的?如果是这样,你还应该添加“java”标签到你的问题。 –

回答

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"; 
} 
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"; 
} 
相关问题