1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > java不兼容的类型_Java泛型 不兼容的类型错误(带有继承)

java不兼容的类型_Java泛型 不兼容的类型错误(带有继承)

时间:2020-05-30 04:14:47

相关推荐

java不兼容的类型_Java泛型 不兼容的类型错误(带有继承)

我有跟随抽象类…

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。