2012-09-04 22 views
3

雖然重構了我的一個項目,但我用"en""de"替換了所有語言ISO代碼,Locale類及其常量Locale.ENGLISHLocale.GERMAN使其更加重構保存並最小化錯誤來源。然後,我使用locale.getLanguage()以字符串形式獲取ISO代碼。Java中是否有專用的語言類?

我使用這種方法的問題是地區類別開銷的國家和變體字段的形式。我正在考慮編寫我自己的語言類以避免這種開銷。

使用自定義班級,還是已經有專門的Language班級,我錯過了?

+1

開銷只應創建一個Locale的第一次。如果你緩存這些地區,開銷應該是微不足道的。你在談論其他一些開銷嗎? –

+1

這個開銷如何影響你?問題是什麼? – 2012-09-04 08:55:34

+4

您是否認爲英國的英語與美國的英語相同?或來自西班牙的西班牙語與墨西哥的一樣?是的,一個人可以相互理解,但從計算機的角度來看,他們是不同的(同一詞的不同意思,不同的意思相同的拼寫等) –

回答

10

您錯過了編程的基本原理之一:不要重新發明輪子。

是的,Locale類可以做得比你需要的多,但是開銷通常是微不足道的。此外,使用它可以讓其他編碼人員立即瞭解您的代碼的一部分。

+0

注意事項+1,Locale會立即被其他人理解 –

2

開銷並不高。這會獲取每個語言環境。

long start = System.currentTimeMillis(); 
for (Locale l : Locale.getAvailableLocales()) 
    l.toString(); 
long time = System.currentTimeMillis() - start; 
System.out.println(time + " ms."); 

打印

15 ms. 
相關問題