【发布时间】:2012-02-21 00:44:17
【问题描述】:
我在 Java 中遇到了泛型问题,我在网上找不到以类似方式使用泛型的人的解决方案或示例。我有一组位于相同请求/响应结构中的方法。例如,用户填充 Request 对象中的字段,将该对象传递给辅助方法,然后返回一个 Response 对象。我所有的请求对象都从一个通用的 Request 超类扩展而来(类似地,来自 Response 超类的 Response 对象)。我希望我的助手类也有一个一致的结构,所以我使用了一个接口。这里有一些代码来说明......
请求超类:
public class SuperRequest {
// ...
}
示例请求子类:
public class SubRequest extends SuperRequest {
// ...
}
响应超类:
public class SuperResponse {
// ...
}
示例响应子类:
public class SubResponse extends SuperResponse{
// ...
}
界面:
public interface SomeInterface {
public <T extends SuperRequest, U extends SuperResponse> U someMethod(T request);
}
从界面中可以看出,我想传递一个对象,它是SuperRequest 的子对象,我想返回一个对象,它是SuperResponse 的子对象。这是我的实现:
public class SomeImplementation implements SomeInterface {
@Override
public SubResponse someMethod(SubRequest request) {
return null;
}
}
在 Eclipse 中,我收到编译错误,因为编译器告诉我我有未实现的方法,并且 @Override 表示法“不会覆盖超类型方法”。
有人可以帮我吗?我的语法不正确还是我对泛型的理解有点偏离?非常感谢任何帮助!
【问题讨论】: