Interface
にString
や、int
の定数を持たせることができるのは知っていましたが、java.util.Map<K, V>
も持たせられるのですね。これは知りませんでした。
元ネタはここ。
How to Initialise a static Map in Java - stackoverflow
public interface AlarmDate {
public static final String KEY_YEAR = "YEAR";
public static final String KEY_MONTH = "MONTH";
@SuppressWarnings("serial")
public static final Map<String, Utility> KEY_ENUM =
Collections.unmodifiableMap(new HashMap<String, Utility>(){{
put(KEY_YEAR, Utility.ATTRIBUTE_YEAR);
put(KEY_MONTH, Utility.ATTRIBUTE_MONTH);
}});
enum Utility {
ATTRIBUTE_YEAR {
@Override
public String attribute() {
return KEY_YEAR;
}
}, ATTRIBUTE_MONTH {
@Override
public String attribute() {
return KEY_MONTH;
}
};
abstract public String attribute();
}
}
enum
からString
は簡単にアクセスできたのですが、String
からenum
にどうやってアクセスできるか悩んでいたんですよ。switch
文を書くのも嫌だし(というか、switch
文を書かないために戦略的enum
パターンを使っている)、どうしようか悩んでいたので、すっきりしました。
0 件のコメント:
コメントを投稿