有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何获取接口的返回类型<T>?

我被这个问题困住了,我试图纠正它,但没有任何改变

首先,“堆栈”是一个接口 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;
}

所以我在“return ns;”语句中得到一个编译错误,它说:

Type mismatch: cannot convert from Type[] to Stack

我不知道我是用错误的方式写了方法签名还是新数组

我将感谢你的帮助:)


共 (1) 个答案

  1. # 1 楼答案

    这里:

    Type[] ns
    

    返回,因此应为:

    Stack<Type>
    

    但是一系列的T。。。不是T的堆栈。你必须下定决心,该方法应该返回一个数组(然后更改签名),还是应该返回一个新的堆栈实例(在这种情况下,你不能返回ns数组!)

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

    • 创建ArrayStack的新实例
    • 使用原始堆栈提供的相同内容设置新堆栈的堆栈。。。然后
    • 返回新的ArrayStack实例