Javaでenumを書いたみたけども

こういう書き方ってありなんかな。Javaの感覚がわからない。

public enum MessageType {
	None("0"), Foo("1"), Bar("2"), Baz("3");

	private static final HashMap<String, MessageType> map;
	private final String code;

	static {
		map = new HashMap<String, MessageType>();
		for (MessageType type : MessageType .values()) {
			map.put(type.getCode(), type);
		}
	}

	private MessageType (String code) {
		this.code = code;
	}

	public String getCode() {
		return code;
	}

	public static MessageType parse(String code) {
		if (map.containsKey(code)) {
			return map.get(code);
		}
		throw new IllegalArgumentException();
	}
}