java - 如何将 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>();
解决方案
答案是:你没有。
当您转向ArrayList的javadoc时,您会发现:
所有实现的接口:
可序列化、可克隆、可迭代、集合、列表、随机访问
StackInterface 不存在。因此,永远不能将 ArrayList转换为该类型。
因此,您宁愿需要:
StackInterface<Integer> stack = new PostFixStack<>();
换句话说:您的堆栈实现类使用 ArrayList 的事实是该实现的内部细节,当您想要创建一个堆栈时,您将实例化该实现,而不是其他东西!
推荐阅读
- javascript - 如何在 JavaScript 中同时删除 DOM 中具有相同 id 的两个元素?
- php - Laravel 日志更改无需操作,helpers.php 问题
- ios - WKWebView 不要求保存密码
- python - 用python对自己的数据进行插值
- java - Spring & Jackson - 自定义 XML 的 JSON 列表
- spring-boot - 带有注解@Primary和@Secondary的SpringBoot Bean依赖注入
- java - 无法使用 Spring Boot 连接到 Key Vault
- r - 来自长格式数据的重复测量的方差 - 协方差矩阵?
- c++ - 更新 QJsonArray 中的值并写回 Qt 中的 Json 文件
- python - 使用 Python 对每个 userprofileid 的总小时数和分钟数求和