16

例: eng、spa、ita、ger

すべてのロケールを反復してコードを比較することはできますが、これを達成するためのよりエレガントでパフォーマンスの高い方法があるかどうか疑問に思います....

ヒントをありがとう:)

4

3 に答える 3

2

Locale(String language)language は 2 文字の ISO-639-1 コードです。HashMap<String,String>ISO-639-2 を ISO-639-1 に変換する最も簡単な方法は、定数を作成することだと思います。

于 2009-03-23T16:26:11.470 に答える
0

同様の要件を持つ私のプロジェクトからのいくつかの変更されたコード。独自の歴史的なタイムゾーン形式があるため、標準ライブラリを使用できません。

public class MyProjectTimeZoneFactory  {

   private static Map timeZoneDb;

   /**
   * Set up our timezone id mappings; call this from any constructor
   * or static method that needs it.
   */
   private static void init() {
      if(null == TimeZoneDb) {
         timeZoneDb = new HashMap();   // Maybe a TreeMap would be more appropriate
         timeZoneDb.put("     ","GMT+00");
         timeZoneDb.put("EAD  ","GMT+10");
         timeZoneDb.put("JST  ","GMT+9");
         // etc.
       }
   }

   public static TimeZone getTimeZone(String id) 
                          throws CommandFormatException {
       init();

       TimeZone tz;
       if(timeZoneDb.containsKey(id)) {
           tz = TimeZone.getTimeZone((String)timeZoneDb.get(id));
       } else {
           throw new CommandFormatException("Invalid Timezone value");
       }

       return tz;
   }

 }

マップは、コードではなく構成 (おそらくプロパティ ファイル) に含める方がよいと主張することもできます。それは本当かもしれませんが、実用的なプログラマーのルール「あなたはそれを必要としない」ということを覚えておいてください。

于 2009-03-23T16:53:08.830 に答える