一个带有一个参数的构造函数,该参数创建两个不同的对象

问题描述 投票:0回答:1

因此,我正在学习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
}

java arraylist linked-list stack
1个回答
0
投票

如果您寻找可用于/*argument*/的类型,则可以这样操作:

public class ListStack implements Stack {
  public ListStack(List list) {
  }
  /* note that you must implement all methods from the interface */
}

为什么使用类型ListList是通用接口,由LinkedListArrayList实现。因此,您可以在构造函数中使用它们之一。

注意:您不应使用原始类型。 List和实现此接口的类具有类型参数。如果可能,您应该使用List<String>List<T>之类的东西。但是也许,您将在以后的课程中学习。

© www.soinside.com 2019 - 2024. All rights reserved.