类如何实现扩展Java中另一个通用接口的通用接口?
我是Java新手,正在致力于实现通用接口,这就是我希望得到一些帮助的地方
我想用Java实现一个通用接口,扩展另一个接口。这就是当前界面结构的样子-
interface ItemsProviderInterface<ExtReq, ExtRes>
extends GenericItemProviderInterface<ItemRequest, ExtReq, ExtRes, ItemResponse> {}
interface GenericItemProviderInterface<Req, ExtReq, ExtRes, Res>{
ExtReq convertInput(Req req)
Res convertResponse(ExtRes res)
ExtRes request(ExtReq req)
}
我想实现ItemsProviderInterface
接口,并为convertInput(), convertResponse(), request()
方法提供定义
也许是-
class itemsProvider<> implements ItemsProviderInterface<>
我不确定用哪个泛型类型来定义类。。与ItemsProviderInterface或GenericTemproviderInterface相对应的。我读了很多博客帖子,在StackOverflow上搜索了一个类似的问题,但没有找到。非常感谢您的帮助
# 1 楼答案
我认为值得检查一下,在这种情况下,哪个标识符意味着什么。让我们先看看基本接口
GenericItemProviderInterface<Req, ExtReq, ExtRes, Res>
这里所有4个类型参数
Req
、ExtReq
、ExtRes
和Res
都是类型参数。记住这一点很重要,因为他们自己不是那种类型的人然后让我们看看派生接口的定义:
ItemsProviderInterface<ExtReq, ExtRes>
只有两个类型参数:ExtReq
和ExtRes
。请注意,尽管名称相同,但它们与基本接口上的名称本质上没有任何关系。这种联系现在出现了:这意味着
ItemsProviderInterface
是一个GenericProviderInterface
类型参数如下:Req
的GenericItemProviderInterface
被设置为实际类型(类或接口)ItemRequest
李>GenericItemProviderInterface
的{ItemsProviderItnerface
的类型参数ExtReq
ExtRes
{ExtRes
Res
的GenericItemProviderInterface
被设置为实际类型ItemResponse
李>因此,基类的4个类型参数中有2个“固定”为特定类型,其余两个为左变量
如果现在实现
ItemProviderInterface
,您可以也有两个类型参数,并将它们路由到ExtReq
/ExtRes
或将它们固定到特定的类(或执行1-and-1,但这对于这个特定的示例可能没有用处)所以或者
或