我知道我的用例看起来很傻但这是解释我需要的最简单的方法,所以这里就是
假设我想编写以下愚蠢的通用方法:
void toString(Object o);
Object fromString(String enumObject,Class<Enum> classOfTheObject);
给出:
public enum PositionType
{
B,
F,
L,
R
}
和:
PositionType ptype = PositionType.B;
我如何继续并实施这些方法,以便:
fromString(toString(ptype),PositionType.class).equals(PositionType.B);
会返回true吗?
我试着看java reflections tutorial,但我仍然没有找到如何解决它...
请注意,实现不能依赖于特定的枚举类型,它可以是任何枚举类型,但是对于我需要的,我们可以将自己限制为仅枚举对象。
答案 0 :(得分:1)
你可以通过许多解决方案来实现这一点,这里有一个(我写了严格的最低限度):
String toString(Object o) {
return ((Enum) o).name();
}
<T extends Enum<T>> Object fromString(Class<T> enumType, String o) {
return Enum.valueOf(enumType, o);
}