大多数人应该熟悉为Spring + hibernate制作泛型DAO。该参考文献不同于http://www.ibm.com/developerworks/java/library/j-genericdao/index.html,但有一个改进,它Single DAO & generic CRUD methods (JPA/Hibernate + Spring)GenericDAO与Guice,玩泛型和参数化类型
这种改善是该类型的检测,因为它是不是使用构造函数来告诉它是哪一类的父类的一部分,
public GenericDaoJpaImpl() {
ParameterizedType genericSuperclass = (ParameterizedType) getClass()
.getGenericSuperclass();
this.entityClass = (Class<T>) genericSuperclass
.getActualTypeArguments()[0];
}
然而,这个演员阵容将失败,Guice。被注入,接口和类需要在模块中绑定这样
bind(TestDao.class).to(TestDaoImpl.class);
并通过这样做的构造招我们GenericDAO不会因为以下的工作:
getClass().getGenericSuperclass() = java.lang.Class
getClass().getName() = com.gwtplatform.samples.basic.server.dao.TestDaoImpl$$EnhancerByGuice$$5fe0d6fd
相反的是一个Spring + Hibernate的返回
getClass().getGenericSuperclass() = sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl
getClass().getName() = com.gwtplatform.samples.basic.server.dao.TestDaoImpl
我只是用我的扩展的DAO超级构造函数了,但还是想获得的类型,而不是提供它,任何想法?
我这个标记作为答案,因为这是获得类型的一种方式,但对我来说,最后这只是很多代码,相比之下,提供类型我自己 – javaNoober 2012-01-11 04:22:13