gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 23:21:24 25 4
gpt4 key购买 nike

所以我正在学习 Java 类(class),我们的作业之一涉及抽象数据类型 (ADT)。在这个作业中,我们应该通过一个名为 LinkedStack 的类来实现一个名为 Stack 的 ADT。 LinkedStack 有一个构造函数,但在我的教授提供给我们的测试用例中,一个新的 LinkedStack 对象可以创建一个新的 LinkedList 对象或一个新的 ArrayList 对象。我的问题是,无论我如何定义我的参数,我仍然收到一个错误,指出该参数与类不兼容。

我尝试了逻辑测试来查看参数是否被称为 LinkedList 还是 ArrayList,我认为这是一件好事,但我不知道如何正确分配参数。

我尝试将参数设置为 Stack,然后转换为 LinkedStack,其中私有(private)最终变量的类型为“Stack”,我也尝试将参数作为列表调用,但我不能似乎摆脱了阻止我开始编译过程的错误。

这就是我们开始的地方:

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
}

最佳答案

如果您正在寻找可用于 /*argument*/ 的类型,你可以这样做:

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

为什么使用类型ListList是通用接口(interface),由 LinkedList 实现和ArrayList 。因此您可以在构造函数中使用其中之一。

注意:您不应使用原始类型。 List并且实现该接口(interface)的类有一个类型参数。如果可能的话,您应该使用类似 List<String> 的内容或List<T> 。但也许,您会在后面的类(class)中学到这一点。

关于java - 一个带有一个参数的构造函数创建两个不同的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58326628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com