我正在使用泛型编写一些类,但找不到解决方案 对于 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 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
.很难区分标识符 Solutions
和 Solution
.
关于java - 关于使用 Java 泛型 : "type parameter S is not within its bound" 的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4423026/