【问题标题】:Is it possible to make parent class Generic in java?是否可以在java中创建父类Generic?
【发布时间】:2020-02-05 09:11:32
【问题描述】:

我有一个情况,我有多个 DAO 类用于从休眠查询中获取结果,我想在每个 DAO 中添加计数作为记录计数的附加列,并从泛型中寻找解决方案。类似的东西。

class GenericResult extends <DAO as generic parameter> {
Long count;
}

这样我就可以替换 DAO 并在任何我想要的地方重用 GenricResult。

entityManager.createNativeQuery(qlString, SpecificDao.class)

我想用

替换上面的行
entityManager.createNativeQuery(qlString, GenricResult.class)

【问题讨论】:

  • 没有。
  • @AndyTurner,您认为有什么替代方法可以实现这一目标吗?
  • 您为什么认为扩展特定的 DAO 类会很有用?
  • 我想返回一个计数以及过滤器查询的结果。因此,当 where 子句返回 2 条记录时,我想将 2 条记录与记录一起返回,我认为拥有一个可重用的泛型类是更好的主意,因此我不必修改我的大部分代码,否则现在我必须为每个创建每个 GnericResult 类道

标签: java hibernate generics


【解决方案1】:

泛型只是提供了一种省略显式强制转换的方法。

如果你不能用强制转换做某事,你也不能用泛型做。

你不能用强制转换来做到这一点,所以你不能用泛型来做到这一点。


我会质疑继承是否真的是你想要的。另一种选择是组合:

class GenericResult<D> {
  Long count;

  D getDao();
}

它提供对 DAO 的访问,但 GenericResult is-not-a DAO,这对我来说似乎更正确。

【讨论】:

    猜你喜欢
    • 2011-08-17
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 2016-09-25
    • 2012-11-18
    • 1970-01-01
    相关资源
    最近更新 更多