java - 如何找到Java泛型类型的类对象?

标签 java generics enums

假设我有一个通用类型 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/

相关文章:

c# - 通过用户输入扩展枚举

c - 如何将一个枚举值转换/分配给另一个枚举

java - 将枚举类型从 Rust 转换为 Java

java - Android - Apache 公共(public)库和 Exchange Web 服务托管 API

java - 无法在 Eclipse mars 中导入 com.mongodb.MongoCredential

java - 如何滚动直到对象在弹出窗口中可见?

Java 泛型类型识别

javascript - TypeScript重载中如何区分类型对象和数组?

java - Retrofit2 将正文作为 Json

java - 如何将实例初始值设定项与通用 HashMap 一起使用?