本文介绍了从类中获取枚举实例<? extends Enum>使用String值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我发现很难把确切的问题写入文字,所以我只举一个例子。
I'm finding it difficult to put the exact question into words, so I'll just give an example.
我有两个枚举类型:
enum Shape { CAT, DOG; } enum Color { BLUE, RED; }我有一个方法:
public Object getInstance(String value, Class<?> type);我想使用以下方法:
// someValue is probably "RED", and someEnumClass is probably Color.class Color c = getInstance(someValue, someEnumClass);我一直无法确定如何实现 getInstance / code>。一旦你知道要实例化的确切 Enum 类,就很容易:
I've been having trouble determining exactly how to implement getInstance(). Once you know the exact Enum class that you want to instantiate, it's easy:
Color.valueOf("RED");但是上面这行如何用未知的 c $ c>? (但是,已知 someEnumClass 是 Enum 的子类。)
But how can this above line be accomplished with an unknown Class? (It is, however, known that the someEnumClass is a subclass of Enum.)
感谢!
推荐答案public static <T extends Enum<T>> T getInstance(final String value, final Class<T> enumClass) { return Enum.valueOf(enumClass, value); }
并且方法用作:
final Shape shape = getInstance("CAT", Shape.class);再次,您可以随时使用
final Shape shape = Shape.valueOf("CAT");这是
Enum.valueOf(Shape.class, "CAT");更多推荐
从类中获取枚举实例<? extends Enum>使用String值?
发布评论