reflection - Guice 对象上的类层次结构问题

标签 reflection guice objectify

我正在尝试使用 Guice 实例化我的 Objectify DAO。我的层次结构如下:

public class EmpresaDao extends ObjectifyDao<Empresa> { ... }

public class ObjectifyDao<T> extends DAOBase { ... }

当我使用“new EmpresaDao()”时,getClass().getGenericSuperclass() 给我:

[INFO] superclass -> br.com.xxxxx.server.service.ObjectifyDao<br.com.xxxxx.domain.Empresa>

当我使用“injector.getInstance(EmpresaDao.class)”时,getClass().getGenericSuperclass() 给我:

[INFO] superclass -> class br.com.xxxx.server.service.EmpresaDao

显然,我想让 Guice 使用 DI 实例化我的对象。

有人可以解释为什么会这样吗?

有没有办法(用 Guice 实例化)获得与“new ()”相同的父类(super class)?

谢谢。

最佳答案

感谢帮助我的 Stuart McCulloch here

可以禁用 AOP(使用 Guice whitout AOP)这给了我想要的东西(br.com.xxxxx.server.service.ObjectifyDao)(未测试)

但是我想在我的工具包中使用 AOP,所以我通过从 Guice 生成的代理类中获取 TypeArguments 来解决:

        clazz = (Class<T>) ((ParameterizedType) TypeLiteral.get(getClass()).getSupertype(ObjectifyDao.class).getType()).getActualTypeArguments()[0];

关于reflection - Guice 对象上的类层次结构问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11207729/

相关文章:

java - Java或C#中工厂设计模式的反射(reflection)

java - 创建不与注入(inject)器绑定(bind)的 Guice 单例

java - 为什么无论层次结构如何,GAE 实体名称都必须是唯一的?

java - 硬删除的对象仍然出现在 AppEngine 管理控制台中

c# - 通过反射访问集合

java - 将参数动态传递到 Method.Invoke

c# - 如何使用反射获取继承属性的值?

java - 使用 Guice 注入(inject)字段对 Jersey Resources 进行单元测试

java - 将 Guice 单例服务注入(inject) Quartz 任务、Stripes ActionBeans 和 ServletContextListeners 的正确方法?

java - 为什么开发服务器不为此查询自动创建索引?