因此,我正在学习Java类,我们获得的分配之一涉及抽象数据类型(ADT)。在本次分配中,我们应该通过一个称为LinkedStack的类实现一个称为Stack的ADT。 LinkedStack具有一个构造函数,但是在我的教授为我们提供的测试案例中,新的LinkedStack对象可以创建新的LinkedList对象或新的ArrayList对象。我的问题是,无论我如何定义自变量,我仍然会收到一条错误消息,指出自变量与类不兼容。
我已经尝试进行逻辑测试,以查看参数是被称为LinkedList还是ArrayList,这是一件好事,但我不知道如何正确分配该参数。
我尝试将参数设置为Stack,然后强制转换为LinkedStack,私有最终变量的类型为“ Stack”,我也尝试将参数称为List,但是我不能似乎摆脱了使我无法开始编译过程的错误。
这是我们的开始:
interface Stack {
public void push(Object d){
}
public Object pop(){
}
public Object peek(){
}
public boolean isEmpty(){
}
}
public class ListStack implements Stack{
public ListStack(/*argument*/){
}
}
//Separate test case file
//example of the test cases
public void peekTest1() {
Stack q = new ListStack(new LinkedList());
// assertion cases follow
}
public void peekTest2() {
Stack q = new ListStack(new ArrayList());
// assertion cases follow
}
答案 0 :(得分:0)
如果您寻找可用于/*argument*/
的类型,则可以这样做:
public class ListStack implements Stack {
public ListStack(List list) {
}
/* note that you must implement all methods from the interface */
}
为什么要使用类型List
? List
是公用接口,由LinkedList
和ArrayList
实现。因此,您可以在构造函数中使用它们之一。
注意:您不应使用原始类型。 List
和实现此接口的类具有类型参数。如果可能的话,您应该使用List<String>
或List<T>
之类的东西。但是也许,您将在以后的课程中学习。