假设我有一个通用类型 P
这是一个枚举,即 <P extends Enum<P>>
,我想从字符串中获取枚举值,例如:
String foo = "foo";
P fooEnum = Enum.valueOf(P.class, foo);
这会得到一个编译错误,因为 P.class
是无效的。那么我该怎么做才能使上面的代码正常工作呢?
最佳答案
你必须在某个地方有这个泛型类型的运行时实例,这样你就可以通过 Enum#getDeclaringClass()
获取声明类。 .假设您已在某处声明 P p
作为方法参数,下面是一个示例。
例如
public static <P extends Enum<P>> P valueOf(P p, String name) {
return Enum.valueOf(p.getDeclaringClass(), name);
}
关于java - 如何找到Java泛型类型的类对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2929527/