当前位置: 首页 > 面试题库 >

从通用T派生类

须捷
2023-03-14
问题内容

我有一个参数化的休眠dao,它执行基本的crud操作,并且当将参数化用作委托时,对给定的dao执行基本的crud操作。

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

我希望能够在运行时从T派生Class以便在Hibernate中创建条件查询,例如:

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

我知道:

T.getClass()

不存在,但是有什么方法可以在运行时从T导出正确的Class对象吗?

我研究了泛型和反射,但没有提出合适的解决方案,也许我错过了一些东西。

谢谢。


问题答案:

您可以将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;
    }

    // ....

}


 类似资料:
  • 问题内容: 我试图从私钥生成公共ECDSA密钥,但是在Internet上如何进行此操作方面,我还没有找到太多帮助。几乎所有内容都是根据公共密钥规范生成公共密钥的,我不知道该如何获得。到目前为止,这是我汇总的内容: 但是,在运行时,出现以下错误: 我究竟做错了什么?有没有更好/更简便的方法可以做到这一点? 编辑:我设法获得一些代码进行编译,但不能正常工作: 当我运行它时,它会生成一个publicKe

  • 下面是一个人为的例子:(实际代码中使用的命名方案太令人困惑) 我有一个班主任,他是第三方图书馆的一部分,不可更改。我也有一些课程延伸到父亲;比如儿子。祖父有一个类似这样的构造函数: 这个构造函数中实际发生的事情并不重要。重要的是,它所做的任何事情都必须由所有派生类完成,因此对的调用是每个派生类构造函数的第一行。这里的含义是,祖父的所有后代的构造函数,无论距离有多远,都必须始终调用super(或调用

  • 问题内容: 让我解释一下:我已经在Linux上开发了一个应用程序,该应用程序分叉并执行一个外部二进制文件并等待其完成。结果由fork +进程特有的shm文件传达。整个代码都封装在一个类中。 现在,我正在考虑对进程进行线程化以加快处理速度。具有许多不同的类函数实例的实例会分叉并同时(使用不同的参数)执行二进制文件,并将结果与​​它们自己的唯一shm文件进行通信。 这个线程安全吗?如果我在线程中分叉,

  • 我想派生一个具有常量和一些琐碎操作的类: 的派生 应该是策略的结果,但不是。

  • 问题内容: 如何使用C ++从派生类调用父函数?例如,我有一个名为的类,一个名为的类是从父类派生的。每个类中都有一个print函数。在定义孩子的打印功能时,我想调用父母的打印功能。我将如何去做呢? 问题答案: 我冒着明显的危险:调用该函数,如果它在基类中定义,则该函数在派生类中自动可用(除非它是private)。 如果派生类中有一个具有相同签名的函数,则可以通过在基类名称后加上两个冒号来消除歧义。