首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带Guice的GenericDao

带Guice的GenericDao
EN

Stack Overflow用户
提问于 2012-07-26 07:58:02
回答 2查看 484关注 0票数 2

我有一个接口DAO<T>和它的一个通用实现(GenericDAO<T> implements DAO<T>)。

我喜欢这样做:

代码语言:javascript
复制
public interface UserDao extends Dao<User> {
 // code
}

// module
bind(UserDao.class).to(GenericDao.class);

有可能吗?我设法自动地将Dao注入到GenericDao中(我没有创建特定的userdao实现),但是,我不能让它工作……

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-26 17:43:53

我不认为您可以将UserDao绑定到GenericDao。因为GenericDao没有实现UserDao,尽管两者都有一个共同的祖先。如果GenericDao类包含您需要的所有方法,那么您就不需要单独的UserDao类。你只需要一个绑定,就像Jeff写的那样:

代码语言:javascript
复制
bind(new TypeLiteral<DAO<User>>(){}).to(new TypeLiteral<GenericDAO<User>>(){});

然后,您的客户端类将依赖于DAO<User>,并且它们将接收GenericDAO<User>。如果您确实需要一些特定于User实体的操作,那么您应该扩展GenericDao<User>

我写了一篇关于这个topic的文章。具体来说,请参阅帖子的底部。

票数 2
EN

Stack Overflow用户

发布于 2012-08-03 03:49:08

为了实际使用泛型类,您最终必须为T选择一种类型。对于您最终使用的每种类型,您需要创建一个如下所示的绑定(使用TInteger )作为示例:

代码语言:javascript
复制
bind(new TypeLiteral<DAO<Integer>>(){})
   .to(new TypeLiteral<GenericDAO<Integer>>(){});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11660447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档