【发布时间】:2015-12-09 03:26:42
【问题描述】:
假设我有一个方法
public <T extends Enum<T>> Enum<T> getEnumValue(String string, ??)
还有一个方法,在不同的类中,
public T method(String string)
...
getEnumValue(string, ??)
我会从方法 2 中将什么作为参数传递给方法 1,以便我可以获得枚举值,即在我的幻想世界中我可以这样做:
方法二:
getEnumValue(string, T.class)
方法一:
getEnumValue(String string, Class<T> clazz)
return Enum.valueOf(clazz, string)
【问题讨论】:
-
由于类型擦除,无法执行此操作。 没办法。没有办法绕过显式的
Class<T>。 -
你可以传入你想要使用的类/枚举全名的字符串信息,然后你想要获取的值。然后解析此字符串以获取类型名称,使用 Class.forName 就是这样。但这不包括泛型,因为我们正在将选择 Class 的决定转移到运行时。
标签: java generics reflection enums