gpt4 book ai didi

java - 通用类型相关但不兼容

转载 作者:行者123 更新时间:2023-11-30 09:19:27 24 4
gpt4 key购买 nike

仍在努力掌握泛型概念...线路

public interface FileStructure<L extends FileStructureLevel<L>, R extends FileStructureResource> extends NodeStructure<L, R>

给出以下信息:

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

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

public interface FileStructureLevel<E extends FileStructureLevel> extends NodeStructureLevel<FileStructureLevel>

所以无论 L1 是什么,它肯定会扩展 L2。为什么不匹配?有人吗?

进一步,给出声明

public interface NodeStructure<L extends NodeStructureLevel<L>, R extends NodeStructureResource>

public class FileStructureResource implements NodeStructureResource<File>

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

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

最佳答案

更改代码

public interface FileStructureLevel<E extends FileStructureLevel>
extends NodeStructureLevel<FileStructureLevel>

public interface FileStructureLevel<E extends FileStructureLevel>
extends NodeStructureLevel<E>

大家都会很开心。就目前而言,FileStructureLevel<L> 不是 NodeStructureLevel<L>根据 NodeStructure 的要求,而是一个 NodeStructureLevel<FileStructureLevel> .这就是编译器试图告诉您的内容。

关于java - 通用类型相关但不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17981736/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com