java - 我可以从泛型类型参数中获取 .class 吗?

标签 java generics gson

我有以下类(class):

public abstract class MyClass<T extends Object> {

    protected T createNewFromData(Reader reader){
        GSON.fromJSON(reader,T.class); // T.class isn't allowed :(
    }
}

如何将 Class 实例传递到那里?是否有一些奇怪和古怪的解决方法?

除了从 T 类型的预实例化对象之外,是否有其他方法可以获取 Class 引用?它也不会让我这样做:

T t = new T();
Class<T> klass = t.class;

尝试#2

有趣的是,如果我从类定义中删除“extends JSONOBjBase”,我只会收到未经检查的转换警告(无错误)。有没有另一种方式来写 Actor 是如何完成的?

eclipse screenshot

最佳答案

没有。
由于类型删除,此信息在运行时不存在。

相反,您可以重新使用 GSON 的 TypeToken hack ,它创建了一个匿名类,该类继承了一个封闭的泛型基类。

关于java - 我可以从泛型类型参数中获取 .class 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12523699/

相关文章:

java - 在 Java 中复制 Arraylist 时出现异常

派生泛型的java删除

java - 如何用接口(interface)序列化一个类?

java - Gson 库,将 JsonObject 转换为 MyObject

java - 从一组 Java Pojo 类创建 JSON 结构

java - 这段 Java 1.7 代码片段中的 TLS 版本是什么?

java - 检测未使用的属性键的简单方法?

Java:用空值反序列化一个json数组

C++仿函数,一种有效的方法?

ios - Swift 泛型数组