ggr*_*ery 3 java generics interface
我遇到了Java中的泛型问题,我无法在网上找到以类似方式使用泛型的人的解决方案或示例.我有一组处于相同请求/响应结构中的方法.例如,用户填充Request对象中的字段,将对象传递给辅助方法,然后返回一个Response对象.我的所有请求对象都从一个常见的Request超类扩展(类似地,来自Response超类的Response对象).我希望我的帮助程序类也具有一致的结构,所以我使用了一个接口.这里有一些代码来说明......
要求超级:
public class SuperRequest {
// ...
}
Run Code Online (Sandbox Code Playgroud)
示例请求子类:
public class SubRequest extends SuperRequest {
// ...
}
Run Code Online (Sandbox Code Playgroud)
响应超级:
public class SuperResponse {
// ...
}
Run Code Online (Sandbox Code Playgroud)
示例响应子类:
public class SubResponse extends SuperResponse{
// ...
}
Run Code Online (Sandbox Code Playgroud)
界面:
public interface SomeInterface {
public <T extends SuperRequest, U extends SuperResponse> U someMethod(T request);
}
Run Code Online (Sandbox Code Playgroud)
正如您从界面中看到的,我想传递一个子对象,SuperRequest我想返回一个子对象SuperResponse.这是我的实现:
public class SomeImplementation implements SomeInterface {
@Override
public SubResponse someMethod(SubRequest request) {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
在Eclipse中,我得到编译错误,因为编译器告诉我我没有未实现的方法,并且@Override符号"不会覆盖超类型方法".
有人能帮我一下吗?我的语法不正确还是我对泛型有点了解?任何帮助是极大的赞赏!
尝试将您的界面和实现更改为:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
698 次 |
| 最近记录: |