我有跟随抽象类…
public abstract class IRepository {
public T getEntityById(int idEntity){
try{
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction tx = session.beginTransaction();
T result = (T) session.createQuery( getByIdQuery() + idEntity ).uniqueResult();
mit();
if (result != null){
System.out.println("Fetched " + result.toString());
return result;
}
else return null;
}
catch (Exception e){
// TO DO : logging
handleException(e);
return null;
}
}
还有另一个类,继承自这个类…
public class ProductRepository extends IRepository {
public ProductRepository(){
}
}
当我从主类进行以下调用时,出现错误…
ProductRepository prodRep = new ProductRepository();
Product result = prodRep.getEntityById(111);
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - incompatible types
required: gestor.model.Product
found: java.lang.Object
我的问题是..为什么会这样?我的getEntityById返回的不是T类型的东西吗,在这种情况下,i应该是产品?
我在Netbeans中工作,在编译时未显示任何错误.
谢谢您的帮助=)
解决方法:
我怀疑您的导入或配置中有错误.在Eclipse中,您可以“清理”项目以清除所有二进制文件并重新构建;尝试在Netbeans中进行等效操作.
以下代码对我来说很好用,似乎可以直接简化您的问题:
// Test.java
public abstract class Test {
public T get(int i) {
return null;
}
public static void main(String[] args) {
StringTest st = new StringTest();
String s = st.get(0);
System.out.println(s); // prints: null
}
}
class StringTest extends Test {
public StringTest() { }
}
标签:inheritance,generics,java
来源: https://codeday.me/bug/1123/2066678.html