雖然重構了我的一個項目,但我用"en"
和"de"
替換了所有語言ISO代碼,Locale
類及其常量Locale.ENGLISH
和Locale.GERMAN
使其更加重構保存並最小化錯誤來源。然後,我使用locale.getLanguage()以字符串形式獲取ISO代碼。Java中是否有專用的語言類?
我使用這種方法的問題是地區類別開銷的國家和變體字段的形式。我正在考慮編寫我自己的語言類以避免這種開銷。
使用自定義班級,還是已經有專門的Language
班級,我錯過了?
雖然重構了我的一個項目,但我用"en"
和"de"
替換了所有語言ISO代碼,Locale
類及其常量Locale.ENGLISH
和Locale.GERMAN
使其更加重構保存並最小化錯誤來源。然後,我使用locale.getLanguage()以字符串形式獲取ISO代碼。Java中是否有專用的語言類?
我使用這種方法的問題是地區類別開銷的國家和變體字段的形式。我正在考慮編寫我自己的語言類以避免這種開銷。
使用自定義班級,還是已經有專門的Language
班級,我錯過了?
您錯過了編程的基本原理之一:不要重新發明輪子。
是的,Locale
類可以做得比你需要的多,但是開銷通常是微不足道的。此外,使用它可以讓其他編碼人員立即瞭解您的代碼的一部分。
注意事項+1,Locale會立即被其他人理解 –
開銷並不高。這會獲取每個語言環境。
long start = System.currentTimeMillis();
for (Locale l : Locale.getAvailableLocales())
l.toString();
long time = System.currentTimeMillis() - start;
System.out.println(time + " ms.");
打印
15 ms.
開銷只應創建一個Locale的第一次。如果你緩存這些地區,開銷應該是微不足道的。你在談論其他一些開銷嗎? –
這個開銷如何影響你?問題是什麼? – 2012-09-04 08:55:34
您是否認爲英國的英語與美國的英語相同?或來自西班牙的西班牙語與墨西哥的一樣?是的,一個人可以相互理解,但從計算機的角度來看,他們是不同的(同一詞的不同意思,不同的意思相同的拼寫等) –