从类中获取枚举实例<? extends Enum&gt;使用String值? [英] Get Enum Instance from Class&lt;? extends Enum&gt; using String value?

查看:632
本文介绍了从类中获取枚举实例<? extends Enum&gt;使用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&gt;使用String值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆