如何将 ArrayList 转换为接口?

3
以下代码给我报错:"类型不匹配:无法将ArrayList转换为StackInterface"。我该如何进行转换,或者我是否使用了错误的数据类型ArrayList?
public class PostFixStack<T> implements StackInterface<T>
    protected ArrayList<T> elements; // ArrayList that holds stack elements
    public PostFixStack() {elements = new ArrayList<T>();      
}

public int evaluate(String expression){
    Scanner tokenizer = new Scanner(expression);
    StackInterface<Integer> stack = new ArrayList<T>();

StackInterface 不是 List 类型。 - soorapadman
1个回答

7
答案是:你不需要这样做。
当你查看javadoc中的ArrayList时,你会发现以下内容:

所有已实现的接口:

Serializable、Cloneable、Iterable、Collection、List、RandomAccess

StackInterface 并不在其中。因此,ArrayList 永远不能转换为该类型。
因此,你需要使用以下代码:
StackInterface<Integer> stack = new PostFixStack<>();

换句话说:你的堆栈实现类使用ArrayList是该实现的内部细节,当你想要创建其中一个堆栈时,你实例化的是那个实现,而不是其他东西!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接