我经常使用这种技术,但我不知道该怎么称呼它。我称之为关联枚举。这是对的吗?
示例:
public enum Genders {
Male("M"), Female("F"), Transgender("T"), Other("O"), Unknown("U");
private String code;
Genders(String code) {
this.code = code;
}
public String getCode() {
return code;
}
public static Genders get(String code) {
for (Genders gender : values()) {
if (gender.getCode().equalsIgnoreCase(code)) {
return gender;
}
}
return null;
}
}
答案 0 :(得分:3)
我有一组用于执行此操作的类但除了Encodable
interface Encodable<T>{
T getCode();
}
public class EnumUtils{
public static <U, T extends Enum<T> & Encodable<U>> T getValueOf(
@Nonnull Class<T> enumClass,
@Nullable U code){
for (T e : enumClass.getEnumConstants()){
if (Objects.equal(e.getCode(), code))
return e;
}
throw new IllegalArgumentException("No enum found for " + code);
}
}
答案 1 :(得分:2)
我会说这看起来有点像Multiton Pattern。如果你按照erikb的建议并使用地图而不是循环,我会说它与完全就像Multiton模式一样。
答案 2 :(得分:1)
我会说这是一个非常非常简单的解析器。