Javaを使用String
してEnumeration
、をの同等の値に変換することは可能ですか?
もちろん、これは大きなif-else
ステートメントで行うこともできますが、できれば避けたいと思います。
このドキュメントを考えると:
http://download.oracle.com/javase/1.4.2/docs/api/java/util/Enumeration.html
ifsやcaseステートメントなしでこれが可能であることをあまり期待していません。
Javaを使用String
してEnumeration
、をの同等の値に変換することは可能ですか?
もちろん、これは大きなif-else
ステートメントで行うこともできますが、できれば避けたいと思います。
このドキュメントを考えると:
http://download.oracle.com/javase/1.4.2/docs/api/java/util/Enumeration.html
ifsやcaseステートメントなしでこれが可能であることをあまり期待していません。
回答:
java.util.Enumeration
Java 1.5 列挙型とは異なります。
を使用YourEnum.valueOf("String")
して、同等の列挙型を取得できます。
したがって、列挙型が次のように定義されている場合:
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY
}
あなたはこれを行うことができます:
String day = "SUNDAY";
Day dayEnum = Day.valueOf(day);
Type.valueOf("enum string")
実際に存在することに気付かずに、自分のソリューションを過度に設計した可能性があります。
よりきめ細かい制御ができると思いますが、本当に必要かどうかはわかりません。
public enum Type {
DEBIT,
CREDIT;
public static Map<String, Type> typeMapping = Maps.newHashMap();
static {
typeMapping.put(DEBIT.name(), DEBIT);
typeMapping.put(CREDIT.name(), CREDIT);
}
public static Type getType(String typeName) {
if (typeMapping.get(typeName) == null) {
throw new RuntimeException(String.format("There is no Type mapping with name (%s)"));
}
return typeMapping.get(typeName);
}
}
コードをクリーンアップできる可能性のある交換(またはスローしたい例外)を交換IllegalArgumentException
していると思いますRuntimeException
。