首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从注入器获取TypeLiteral绑定或实例[Google Guice]

如何从注入器获取TypeLiteral绑定或实例[Google Guice]
EN

Stack Overflow用户
提问于 2020-10-28 14:27:14
回答 1查看 27关注 0票数 0

我有Dao<T>接口,它是由BaseDao<T>类实现的& BaseDao<T>后来被许多子类扩展,比如UserDao类。

代码语言:javascript
复制
interface Dao<T>{}

abstract class BaseDao<T> implements Dao<T>{}

class UserDao extends BaseDao<User>{}

下面是guice绑定

代码语言:javascript
复制
bind(new TypeLiteral<Dao<User>>() {
        }).annotatedWith(Names.named("UserDao")).toProvider(UserDaoProvider.class);

提供程序看起来像..

代码语言:javascript
复制
public class UserDaoProvider implements Provider<UserDao> {

    @Override
    public UserDao get() {
        return new UserDao();
    }

}

现在我正在尝试从guice injector获取它

代码语言:javascript
复制
injector.getInstance(Key.get(new TypeLiteral<Dao<User>>() {
                }, Names.named("UserDao")));

但我得到了null

请帮助解决此问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-28 16:30:01

我们可以按如下方式获取UserDao的实例

代码语言:javascript
复制
injector.getInstance(UserDao.class);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64567482

复制
相关文章

相似问题

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