java - 从泛型 T 派生类

标签 java generics reflection derived-class

我有一个执行基本 crud 操作的参数化 hibernate dao,当参数化用作委托(delegate)来完成给定 dao 的基本 crud 操作时。

public class HibernateDao <T, ID extends Serializable> implements GenericDao<T, ID>

我希望能够在运行时从 T 派生类以在 Hibernate 中创建标准查询,这样:

public T findByPrimaryKey(ID id) {
    return (T) HibernateUtil.getSession().load(T.getClass(), id);
}

我知道:

T.getClass()

不存在,但有没有办法在运行时从 T 派生出正确的 Class 对象?

我看过泛型和反射,但没有找到合适的解决方案,也许我遗漏了什么。

谢谢。

最佳答案

您可以将类作为构造函数参数传递。

public class HibernateDao <T, ID extends Serializable> implements GenericDao<T, ID> {

    private final Class<? extends T> type;

    public HibernateDao(Class<? extends T> type) {
        this.type = type;
    }

    // ....

}

关于java - 从泛型 T 派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/801940/

相关文章:

java - 通用类型 toArray 和 asList

Android dex 类加载器 - 找不到类

c# - 从字符串创建对象名称

java - 在 C# 中存储泛型类型引用

java - Mallet HMM 训练问题

java - XML sax 解析异常。无效内容错误

java - 哪些行应该取消注释以及为什么、继承

swift - 基于非等同数据结构比较包含实际等同类型的字典

java - 为什么在 Android 中,getDeclaredMethod 仅在 API 级别 9 上可用?

Java:构造对象矩阵时出现 Eclipse ClassNotFound 异常