Java 泛型问题:类“不在类型变量范围内”错误。
Posted
技术标签:
【中文标题】Java 泛型问题:类“不在类型变量范围内”错误。【英文标题】:Java generics issue: Class "not within bounds of type-variable" error. 【发布时间】: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 可能缺少哪些属性以使其不符合要求,但结果却一无所获。
有什么想法吗?
【问题讨论】:
【参考方案1】:在MySearchTree
中,基本类型的K
是Course
。所以K
必须“扩展”Comparable<Keyable<Course>> & Keyable<Course>
。但它没有,它扩展了Comparable<Keyable<DataElement>> & Keyable<DataElement>
。
我猜 DataElement
应该以类似于 Comparable
或 Enum
的方式泛化。
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>
【讨论】:
哇,非常感谢。你让我省了好几个小时的头痛。以上是关于Java 泛型问题:类“不在类型变量范围内”错误。的主要内容,如果未能解决你的问题,请参考以下文章