java - 通用 DAO 如何为所有不同的 DAO 实现返回相同的类型?

标签 java dao jdo datanucleus genericdao

我正在为我的 DataNucleus JDO DAO 创建通用 DAO。通用 DAO 将执行获取、更新、删除、创建操作和一些其他通用操作,因此这些实现可以在更具体的 DAO 中进行扩展。

是否有可能以某种方式扩展通用 DAO 并让它返回正确的类型,例如在通过 id 获取对象时?

User user = userDao.get(userId); // Is this possible when UserDao extends generic DAO ?? userDao should return user of type User instead of object.

最佳答案

是的,可以用泛型来做到这一点:

public abstract class Dao<T> {
    public T get(String id) { ... }

    ...
}

public class UserDao extends Dao<User> {
    ...
}

UserDao userDao = new UserDao();
User user = userDao.get(userId); //Returns a User

根据您的需要,Dao<T>可以是抽象基类,或通用接口(interface)(例如 public interface IDao<T> { ... }

关于java - 通用 DAO 如何为所有不同的 DAO 实现返回相同的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12561429/

相关文章:

java - 如何使用 JDO 从数据库中获取特定数量的行?

java - 在 web 应用程序中使用 spring security 实现 Oauth2

ms-access - Access 2007 升级 DAO 引用冲突

java - Play Framework 依赖注入(inject)不起作用

java - 使用 DAO 和 Web 服务的数据库插入方法的 Junit 测试用例

java - 当数据源动态变化时如何设计 DAO

java - appengine 数据存储区更改实体属性

java - 当以下代码包含在事务中时,为什么应用程序引擎向我收取的费用会减少?

java - 在尝试删除文件之前检查文件是否已经打开

java - 以编程方式添加安全方案时,架构从组件中消失