首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与泛型类型相关但不兼容

与泛型类型相关但不兼容
EN

Stack Overflow用户
提问于 2013-07-31 22:01:26
回答 1查看 82关注 0票数 2

还在试图把握泛型概念..。线

代码语言:javascript
复制
public interface FileStructure<L extends FileStructureLevel<L>, R extends FileStructureResource> extends NodeStructure<L, R>

给出以下信息:

代码语言:javascript
复制
type argument L#1 is not within bounds of type-variable L#2
  where L#1,L#2 are type-variables:
    L#1 extends FileStructureLevel<L#1> declared in interface FileStructure
    L#2 extends NodeStructureLevel<L#2> declared in interface NodeStructure

现在,这看起来很简单,因为类型界限是不同的。然而,令人困惑的是,实际上,我只是在缩小界限,因为

代码语言:javascript
复制
public interface FileStructureLevel<E extends FileStructureLevel> extends NodeStructureLevel<FileStructureLevel>

因此,不管L1是什么,它肯定会扩展L2。为什么错配?有没有人?

此外,鉴于声明

代码语言:javascript
复制
public interface NodeStructure<L extends NodeStructureLevel<L>, R extends NodeStructureResource>

代码语言:javascript
复制
public class FileStructureResource implements NodeStructureResource<File>

为什么第一行不产生与R相关的类似错误,如下所示:

代码语言:javascript
复制
type argument R#1 is not within bounds of type-variable R#2
  where R#1,R#2 are type-variables:
    R#1 extends FileStructureResource declared in interface FileStructure
    R#2 extends NodeStructureResource declared in interface NodeStructure
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-31 22:23:34

更改您的代码

代码语言:javascript
复制
public interface FileStructureLevel<E extends FileStructureLevel>
    extends NodeStructureLevel<FileStructureLevel>

代码语言:javascript
复制
public interface FileStructureLevel<E extends FileStructureLevel>
    extends NodeStructureLevel<E>

大家都会高兴的。现在看来,FileStructureLevel<L>不是NodeStructure所要求的NodeStructureLevel<L>,而是NodeStructureLevel<FileStructureLevel>。这就是编译器想要告诉你的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17981736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档