如何获取 TypeLiteral 绑定或可以说来自注入器的实例 [Google Guice]

How to get TypeLiteral binding or can say instance from injector [Google Guice]

我有 Dao<T> 接口,它由 BaseDao<T> class & BaseDao<T> 实现,后来由许多子 class 扩展,如 UserDao class.

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

请帮忙解决问题。

我们可以得到UserDao的实例如下

injector.getInstance(UserDao.class);