我正在研究数据结构,我被要求编写一个程序,允许商店经理使用4个类来操作库存:ListInterface、ExpandableArrayList(实现该接口的类)、class item(存储在Arraylist中的类型),当然还有Test类。
有些方法需要使用compareTo。也就是说,具有可比性,但我不知道什么阶级应该具有可比性?我是否应该编写可比较的实现或扩展?
以下是我现在拥有的类标题:
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>> {... }
但由于某些原因,我无法在测试类中创建对象。键入时:
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
我该如何解决这个问题?到底应该改变什么?...
提前非常感谢。
应该是这样的-
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> {... }
T这是您的类型项目需要实现的可比性。这将允许ExpandableArrayList类使用该类提供的比较在Item类型的元素上运行compareTo方法。当您从Comparable实现compareTo时,您必须给出一种方法来比较不同的项目,这最好是基于Item类的属性。
public class Item implements Comparable<Item> {... }
这就是类def的外观。
您必须为接口编写实现,为类编写扩展。
继承教程
接口教程
问题内容: 我试图找出扩展Thread类的可能的优点是什么? 这是我描述的另一个问题的一部分:在Java中有两种创建线程的方法 从Thread类扩展 实现可运行的接口 如此处所述,使用可运行接口有许多好处。我的问题是从Thread类扩展的优点是什么?我想到的唯一好处是可以从Thread类扩展,并且可以称其为ThreadExtended类。然后,他/她可以在ThreadExtended中添加更多功能
问题内容: 创建数组时,无法更改其大小;它是固定的。好的,看起来不错,我们可以创建一个新的更大的数组并逐个复制值,这有点慢。它的技术背景是什么? 问题答案: 这个问题没有提到语言,因此我将选择基于“ C”的数组作为答案。 数组被分配为单个内存块。增长数组是有问题的,因为正确执行此操作的唯一方法是在最后增长它。为了增加大小N,在数组的末尾必须在下一个分配的地址之前至少有N个空闲字节。 要支持这种类型
问题内容: 请用一种易于理解的语言或一些文章的链接进行解释。 问题答案: 用于扩展课程。 用于实现接口 接口和常规类之间的区别在于,在接口中不能实现任何已声明的方法。只有“实现”接口的类才能实现方法。接口的C ++等效项将是一个抽象类(不完全相同,但差不多)。 同样,java不支持类的多重继承。这可以通过使用多个接口来解决。 现在延伸一堂课 在这种情况下 另外,请注意,@Override实现接口不
我正在学习罗伯特·C·马丁(Robert C.Martin)2009年出版的《干净的代码》(Clean Code)一书,我偶然发现了衔接的概念(第10章)。罗伯特引用: 每个方法使用每个变量的类具有最大的内聚性。一般来说,创建这样的最大内聚类既不可取,也不可能。。。 不幸的是,我没有找到详细的解释。有没有人用真实的代码示例来解释这一点? 非常感谢!!
问题内容: 事实并非如此,这让我感到惊讶。 我认为,如果这样声明,那将是很有意义的: 毕竟,是的集合,不是吗? 那么,为什么没有这样一个很好的实现呢? 感谢Cletus提供的最权威的答案,但是我仍然想知道为什么,如果你已经可以查看(通过),那么它不仅扩展了该接口。 如果a 是a ,则元素是什么?唯一合理的答案是“键值对” 确实会很棒! 但这提供了非常有限的(且不是特别有用的)Map抽象。 但是,如
我试图找出扩展Thread类的可能优势是什么? null