如何获得返回类型的接口 ?

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

我陷入了这个问题,我试图纠正它,但没有改变..

所以首先“Stack”是一个接口and this is the required method

复制数组堆栈并将其作为新堆栈返回,这是我的代码:

public class ArrayStack<Type> implements Stack<Type> {

private int maxSize;
private int top;
private Type [] nodes;

@SuppressWarnings("unchecked")

public ArrayStack(int n){
    maxSize = n ;
    top = -1 ;
    nodes = (Type[]) new Object[n];
}



@SuppressWarnings("unchecked")

public Stack<Type> copy() {

    int n = nodes.length;
    Type[] ns = (Type[]) new Object[n];

    for(int i = 0 ; i < n ; i++){

        ns[i]= nodes[i];
    }



    return ns;
}

所以我得到一个编译错误“返回ns;”声明说:

类型不匹配:无法从Type []转换为Stack

我不知道我是否以错误的方式编写了方法签名或新数组。

我将非常感谢你的帮助:)

java interface stack
1个回答
3
投票

这里:

Type[] ns

返回,因此应该是:

Stack<Type>

但是T的数组......不是T的堆栈。你必须下定决心,如果方法返回一个数组(然后更改签名),或者它应该返回一个新的Stack实例(在这种情况下,你可以不返回那个ns阵列!)

正如copy()的名字暗示后者,你可能应该:

  • 创建ArrayStack的新实例
  • 设置新Stack的堆栈,其内容与原始Stack提供的内容相同......然后
  • 返回新的ArrayStack实例。
热门问题
推荐问题
最新问题