如何修复此绑定不匹配错误?

时间:2015-03-20 18:59:35

标签: java generics casting header compareto

<Item>说: -

Bound mismatch: The type Item is not a valid substitute for the bounded parameter <T extends 
 Comparable<? super T>> of the type ExpandableArrayList<T>

ExpandableArrayList<Item> items = new ExpandableArrayList<Item> ();

这些是我的标题:

public interface ListInterface <T extends Comparable <? super T>>
public class ExpandableArrayList<T extends Comparable<?super T>>  extends Item {
public class Item implements Comparable

我无法弄明白我需要改变什么。每当我在一个标题中更改某些内容时,其他错误都会弹出。我使用compareTo(Object obj)类型。

1 个答案:

答案 0 :(得分:2)

您的Item类正在实现Comparable接口的原始格式。您应该通过在Item本身声明一个类型参数来实现通用表单。然后,ExpandableArrayList可以实现Item

的通用形式
public class Item<T extends Comparable <? super T>> implements Comparable<T>

public ExpandableArrayList<T extends Comparable<?super T>>  extends Item<T>

这将解决由于标题引起的编译问题。

但不清楚为什么ExpandableArrayList应该继承Item。它应该包含Item s;这未通过“is-a”测试。 ExpandableArrayList根本不应延长Item