【发布时间】:2015-02-05 17:43:07
【问题描述】:
我正在使用 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<T>的构造函数。我确定这是一个骗子,但我还没有找到相关的副本 - 会继续寻找。 -
“因为方法的第一个参数应该是 java.lang.Class 对象”
T无论如何都不会是java.lang.Class对象。你想要T.class,它也不会编译。 -
如果发现重复项,请验证该解决方案是否适用于 Java 6。
标签: java class compile-time