首页 > 解决方案 > 如何将 ArrayList 转换为接口?

问题描述

以下代码给了我错误“类型不匹配:无法从 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>();

标签: java

解决方案


答案是:你没有。

当您转向ArrayList的javadoc时,您会发现:

所有实现的接口:

可序列化、可克隆、可迭代、集合、列表、随机访问

StackInterface 不存在。因此,永远不能将 ArrayList转换为该类型。

因此,您宁愿需要:

StackInterface<Integer> stack = new PostFixStack<>();

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


推荐阅读