如何从编译类型中获取 Class 对象?
How do I get a Class object from a compiled type?
我正在使用 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;
}
"ret = m_entityManager.find(T, id);" 行有一个编译时错误,因为该方法的第一个参数应该是一个 java.lang.Class 对象,但是,我不知道如何创建给定的对象"T" 编译时参考,或者即使这是可能的。感谢任何帮助。
您可以像这样从 class 签名中提取 class 类型:
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;
}
我正在使用 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;
}
"ret = m_entityManager.find(T, id);" 行有一个编译时错误,因为该方法的第一个参数应该是一个 java.lang.Class 对象,但是,我不知道如何创建给定的对象"T" 编译时参考,或者即使这是可能的。感谢任何帮助。
您可以像这样从 class 签名中提取 class 类型:
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;
}