何时使用扩展或实现Comparable(Java)? +为什么我无法创建对象

时间:2015-03-23 17:49:00

标签: java arraylist data-structures compare comparable

我正在研究数据结构,我被要求编写一个程序,允许商店经理使用4个类操作库存:ListInterface,ExpandableArrayList(实现接口的类),类项(存储的类型)在Arraylist中),当然还有Test类。

某些方法需要使用 compareTo 。也就是说,可比较,但我不知道哪个类应该是可比较的? 如果我应该写 Implements extends Comparable?

这些是我现在拥有的类标题:

public interface ListInterface<T extends Comparable <?super T >> {... }

public class ExpandableArrayList <T extends Comparable <? super T >>
implements ListInterface <T> { ...... } 

public class Item<T extends Comparable<T>> {... } 

但出于某种原因,我无法在Test类中创建Object。 当我输入:

ListInterface<Item> inventoryList= new ExpandableArrayList<Item>(); 

我收到以下错误:

Test.java:9: error: type argument Item is not within bounds of type-variable T 
ListInterface<Item> inventoryList= new ExpandableArrayList<Item> () ; 
where T is a type-variable:
T extends Comparable<? super T> declared in interface ListInterface


Test.java:9: error: type argument Item is not within bounds of type-variable T 
ListInterface<Item> inventoryList= new ExpandableArrayList<Item> () ;
where T is a type-variable:
T extends Comparable<? super T> declared in class ExpandableArrayList

我该如何解决这个问题?究竟应该改变什么? ..

提前多多感谢。

2 个答案:

答案 0 :(得分:1)

这是你的类型Item需要实现Comparable。这将允许ExpandableArrayList类使用该类提供的比较对Item类型的元素运行compareTo方法。当您从Comparable实现compareTo时,您必须提供一种比较不同Items的方法,这应该理想地基于Item类的属性。

public class Item implements Comparable<Item> {... }

这就是类def的样子。

您必须为接口编写implements,为类编写extends

继承tutorial

接口tutorial

答案 1 :(得分:0)

应该是这样的 -

public interface ListInterface<T extends Comparable<? super T>> {... }

public class ExpandableArrayList<T extends Comparable<? super T>> implements ListInterface <T extends Comparable<? super T>> { ...... } 

public class Item implements Comparable<Item> {... }