如何从编译类型中获取Class对象?

时间:2015-02-05 17:43:07

标签: java class compile-time

我使用的是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;编译时间参考,或者即使这是可能的。任何帮助表示赞赏。

1 个答案:

答案 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;
    }