gpt4 book ai didi

java - 关于使用Java泛型的错误: "type parameter S is not within its bound"

转载 作者:太空宇宙 更新时间:2023-11-04 12:16:55 25 4
gpt4 key购买 nike

我正在使用泛型编写一些类,但找不到解决方案对于 SolutionsSubset 类,所以我收到错误“类型参数 S 不在其范围内”。我读过以前的关于相同错误的问题,但我无法解决我的情况。有人可以帮助我提高我对泛型的了解吗?任何引用一本好书(我在google上可以找到很多资料但如果有人可以推荐一本书、教程等,我们将受到欢迎)。虽然我试图记住提问的规则,但我如果我的问题不符合这些规则,请道歉。

我有以下类和接口(interface):



public interface Subset<T extends Comparable<T>> extends Comparable<Subset<T>>
public class MathSubset<T extends Comparable<T>> extends TreeSet<T> implements Subset<T>

public interface Solution<T extends Comparable<T>>

public interface Solutions<S extends Solution<?>> extends Iterable<S>
public class SolutionsSubset<S extends Solution<?>> extends MathSubset<S> implements Solutions<S>

我需要 Subset 扩展 Comparable。在 SolutionsSubset 中,MathSubset 类存储 Solution 对象。我必须如何更改这些定义才能使其正常工作?

提前谢谢您

最佳答案

为了用作 MathSubset 中的类型参数, SolutionsSubset S必须extend Comparable<S> 。作为一个可编译的示例:

import java.util.TreeSet;

interface Subset<T extends Comparable<T>>
extends Comparable<Subset<T>> { }

class MathSubset<T extends Comparable<T>>
extends TreeSet<T>
implements Subset<T>
{
public int compareTo(Subset<T> other) { throw new Error(); }
}

interface Solution<T extends Comparable<T>> { }

interface Solutions<S extends Solution<?>> extends Iterable<S> { }

class SolutionsSubset<S extends Solution<?> & Comparable<S>>
extends MathSubset<S>
implements Solutions<S>
{ }

一些评论:这是一个非常抽象的例子,所以不容易思考。布置代码以便您不需要滚动是很好的。这里发生了大量的继承,也许是组合而不是扩展 TreeSet 。很难区分标识符 SolutionsSolution .

关于java - 关于使用Java泛型的错误: "type parameter S is not within its bound",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39294568/

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