0

我有Dao<T>BaseDao<T>类实现的接口,BaseDao<T>后来由许多子类(如UserDao类)扩展。

interface Dao<T>{}

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

class UserDao extends BaseDao<User>{}

以下是guice绑定

bind(new TypeLiteral<Dao<User>>() {
        }).annotatedWith(Names.named("UserDao")).toProvider(UserDaoProvider.class);

提供者看起来像..

public class UserDaoProvider implements Provider<UserDao> {

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

}

现在我正试图从 guice 注射器中得到它

injector.getInstance(Key.get(new TypeLiteral<Dao<User>>() {
                }, Names.named("UserDao")));

但我得到null

请帮助解决问题。

4

1 回答 1

0

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

injector.getInstance(UserDao.class);
于 2020-10-28T08:30:01.490 回答