Java 返回值泛型问题

最近在学习如何使用泛型但是遇到了问题这是我的代码:

public abstract interface WondersClient {
    
  public abstract <T extends WondersResponse>T excute(WondersRequest<T> wondersRequest)throws IllegalArgumentException, IllegalAccessException,UnsupportedEncodingException,IOException;
  
}

里面的这个抽象方法,我在实际的实现类里面返回了一个WondersResponse对象,但是却报错,说需要强制转换,这是为什么。

阅读 8.8k
2 个回答

实现类方法return的时候做类型转换
return (T) 你的wonderResponse对象;(这样写eclipse会有warning)
或者 return 一个T类型的变量;

因为你定义了泛型方法,返回类型是 ,即 真实的返回类型是WondersResponse一个子类。虽然你返回的是一个WondersResponse对象,但是编译器不认识,当你定义了泛型,编译器就只认识T。

说明你的return语句对返回值的引用不是WondersResponse类型或其子类;
如果你确定它实际上就是WondersResponse类型或其子类的话,返回之前强转一下就行了: (T) retVal;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题