我在 Java 中遇到了泛型问题,我无法在网上找到以类似方式使用泛型的解决方案或示例。我有一组在相同请求/响应结构中的方法。例如,用户填充 Request 对象中的字段,将对象传递给辅助方法,然后返回 Response 对象。我所有的请求对象都从一个通用的 Request 父类(super class)扩展而来(同样,Response 对象也从 Response 父类(super class)扩展而来)。我希望我的助手类也有一个一致的结构,所以我使用了一个接口(interface)。这是一些代码来说明...
请求父类(super class):
public class SuperRequest {
// ...
}
示例请求子类:
public class SubRequest extends SuperRequest {
// ...
}
响应父类(super class):
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
符号“不覆盖父类(super class)型方法”。
有人可以帮我吗?是我的语法不正确还是我对泛型的理解有点偏差?非常感谢任何帮助!
最佳答案
尝试将您的界面和实现更改为:
interface SomeInterface<T extends SuperRequest, U extends SuperResponse> {
public U someMethod(T request);
}
class SomeImplementation implements SomeInterface<SubRequest, SubResponse> {
@Override
public SubResponse someMethod(SubRequest request) {
return null;
}
}
关于接口(interface)中的 Java 泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9364767/