我有一个接口DAO<T>和它的一个通用实现(GenericDAO<T> implements DAO<T>)。
我喜欢这样做:
public interface UserDao extends Dao<User> {
// code
}
// module
bind(UserDao.class).to(GenericDao.class);有可能吗?我设法自动地将Dao注入到GenericDao中(我没有创建特定的userdao实现),但是,我不能让它工作……
发布于 2012-07-26 17:43:53
我不认为您可以将UserDao绑定到GenericDao。因为GenericDao没有实现UserDao,尽管两者都有一个共同的祖先。如果GenericDao类包含您需要的所有方法,那么您就不需要单独的UserDao类。你只需要一个绑定,就像Jeff写的那样:
bind(new TypeLiteral<DAO<User>>(){}).to(new TypeLiteral<GenericDAO<User>>(){});然后,您的客户端类将依赖于DAO<User>,并且它们将接收GenericDAO<User>。如果您确实需要一些特定于User实体的操作,那么您应该扩展GenericDao<User>。
我写了一篇关于这个topic的文章。具体来说,请参阅帖子的底部。
发布于 2012-08-03 03:49:08
为了实际使用泛型类,您最终必须为T选择一种类型。对于您最终使用的每种类型,您需要创建一个如下所示的绑定(使用T的Integer )作为示例:
bind(new TypeLiteral<DAO<Integer>>(){})
.to(new TypeLiteral<GenericDAO<Integer>>(){});https://stackoverflow.com/questions/11660447
复制相似问题