2013-08-02 85 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"; 
} 
相關問題