Java 返回值泛型问题


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


 public abstract interface WondersClient {

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

}

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

java java泛型

想飞and无翼 9 years, 3 months ago

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

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

夜袭saber answered 9 years, 3 months ago

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

猫猫zly answered 9 years, 3 months ago

Your Answer