Cra*_*tis 24 java reflection enums class instantiation
我发现很难将确切的问题写成文字,所以我只想举个例子.
我有两种Enum
类型:
enum Shape {
CAT, DOG;
}
enum Color {
BLUE, RED;
}
Run Code Online (Sandbox Code Playgroud)
我有一个方法:
public Object getInstance(String value, Class<?> type);
Run Code Online (Sandbox Code Playgroud)
我想用这样的方法:
// someValue is probably "RED", and someEnumClass is probably Color.class
Color c = getInstance(someValue, someEnumClass);
Run Code Online (Sandbox Code Playgroud)
我一直无法确定如何实施getInstance()
.一旦知道了Enum
要实例化的确切类,就很容易:
Color.valueOf("RED");
Run Code Online (Sandbox Code Playgroud)
但是如何通过一个未知的方式完成上述这一行Class
呢?(但是,已知它someEnumClass
是.的子类Enum
.)
谢谢!
cha*_*tle 45
public static <T extends Enum<T>> T getInstance(final String value, final Class<T> enumClass) {
return Enum.valueOf(enumClass, value);
}
Run Code Online (Sandbox Code Playgroud)
该方法用作:
final Shape shape = getInstance("CAT", Shape.class);
Run Code Online (Sandbox Code Playgroud)
然后,你可以随时使用
final Shape shape = Shape.valueOf("CAT");
Run Code Online (Sandbox Code Playgroud)
这是一个快捷方式
Enum.valueOf(Shape.class, "CAT");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
32106 次 |
最近记录: |