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 件のコメント:
コメントを投稿