我使用的是Java 6.我有以下代码......
public abstract class AbstractHibernateDAO<T>
{
...
protected T find(final Serializable id)
{
T ret = null;
if (id != null)
{
ret = m_entityManager.find(T, id);
} // if
return ret;
}
&#34; ret = m_entityManager.find(T,id);&#34;因为该方法的第一个参数应该是一个java.lang.Class对象,但是,我不知道如何创建一个给定的&#34; T&#34;编译时间参考,或者即使这是可能的。任何帮助表示赞赏。
答案 0 :(得分:0)
您可以从类签名中提取类类型,如下所示:
public abstract class AbstractHibernateDAO<T> {
private Class<T> persistentClass;
public AbstractHibernateDAO() {
this.persistentClass = (Class<T>)((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
protected T find(final Serializable id)
{
T ret = null;
if (id != null)
{
ret = m_entityManager.find(persistentClass, id);
} // if
return ret;
}