【问题标题】:Java generics issue: Class "not within bounds of type-variable" error.Java 泛型问题:类“不在类型变量范围内”错误。
【发布时间】:2012-04-15 15:45:12
【问题描述】:

我正在开发一个涉及泛型的类项目。

public interface Keyable <T> {public String getKey();}

public interface DataElement extends Comparable<Keyable<DataElement>>, Keyable<DataElement>, Serializable {...}
public class Course implements DataElement {...}


public interface SearchTree<K extends Comparable<Keyable<K>> & Keyable<K>> extends Serializable {...}
public class MySearchTree implements SearchTree<Course> {
...
    private class Node {
        public Course data;
        public Node left;
        public Node right;
        ...
    }
}

尝试在 MySearchTree 的声明中使用 Course 类时,我收到一个类型参数错误,指出“Course 不在类型变量 K 的范围内”。我花了很多时间试图弄清楚 Course 可能缺少哪些属性以使其不符合要求,但结果却一无所获。

有什么想法吗?

【问题讨论】:

    标签: java generics binary-tree binary-search-tree


    【解决方案1】:

    MySearchTree 中,基本类型的KCourse。所以K 必须“扩展”Comparable&lt;Keyable&lt;Course&gt;&gt; &amp; Keyable&lt;Course&gt;。但它没有,它扩展了Comparable&lt;Keyable&lt;DataElement&gt;&gt; &amp; Keyable&lt;DataElement&gt;

    我猜 DataElement 应该以类似于 ComparableEnum 的方式泛化。

    public interface Keyable <T> {public String getKey();}
    
    public interface DataElement<THIS extends DataElement<THIS>> extends Comparable<Keyable<THIS>>, Keyable<THIS>, Serializable {...}
    public class Course implements DataElement<Course> {...}
    
    
    public interface SearchTree<K extends Comparable<Keyable<K>> & Keyable<K>> extends Serializable {...}
    public class MySearchTree implements SearchTree<Course> {
    

    【讨论】:

    • 哇,非常感谢。你让我省了好几个小时的头痛。
    猜你喜欢
    • 2021-07-17
    • 1970-01-01
    • 2014-05-04
    • 2018-01-22
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    • 2011-05-24
    相关资源
    最近更新 更多