从类中获取枚举实例<? extends Enum>使用String值? [英] Get Enum Instance from Class<? extends Enum> using String value?
本文介绍了从类中获取枚举实例<? 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值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文