如何获取 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);
我有 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);