java - 为什么我使用 ArrayDeque/Queue java 得到未定义的类型?

标签 java

我有一个 ArrayDeque,ArrayDeque<Double> monthlyFibs我用 Queue<Double> monthlyFibs = new ArrayDeque<Double>(); 初始化的.

但是,当我去调用我的函数时,public ArrayDeque<Double> monthlyPivotBy3Fibonacci(String[][] contents, DecimalFormat df, double fib_constant, ArrayDeque<Double> monthlyFibs) ,总的来说,就像

dp.monthlyPivotBy3Fibonacci(contents, df, 1.00616, monthlyFibs);我收到一条错误消息:

    The method monthlyPivotBy3Fibonacci(String[][], DecimalFormat, double,
ArrayDeque<Double>) in the type DataProcess is not applicable for the arguments
 (String[][], DecimalFormat, double, Queue<Double>) DataProcess.java    line 530
    Java Problem

我认为问题在于 monthlyFibsQueue<Double> 声明,但是当我通过 monthlyFibs作为Queue<Double> ,我无法使用该功能 push() .我收到错误消息:

The method push(double) is undefined for the type Queue<Double>

解决这个问题的方法是什么?我正在使用 eclipse (Java),它建议我将变量转换为 Queue<double>当我在 main 中调用它时。这是唯一的方法吗?

最佳答案

您可以声明 monthlyFibs 的类型作为Deque<Double>而不是 Queue<Double> :

Deque<Double> monthlyFibs = new ArrayDeque<Double>();

并将方法签名更改为:

public Deque<Double> monthlyPivotBy3Fibonacci(String[][], DecimalFormat, double, Deque<Double>)

这解决了编译问题。

方法push定义在接口(interface)Deque , 但不在 Queue 中,因此编译问题。 请注意 Deque继承自 Queue ,因此 ArrayDeque实现这两个接口(interface)。

使用具体实现ArrayDeque作为方法参数类型/返回值类型很少有意义,因为在这种情况下,您将方法限制为与一个特定的实现一起使用,而该方法可能与 Deque 的任何实现一起使用.

关于java - 为什么我使用 ArrayDeque/Queue java 得到未定义的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36533144/

相关文章:

Java流根据double值对对象进行排序

java - 如何使用现有文本文件进行 JUnit 测试

JavaFX MediaPlayer 在 1 分钟以上后停止

java - 初始化 double 及其 getter

java - 如何以通用方式获取新记录的 ID? (带有 Postgres 的 JOOQ 3.4)

切换窗口后,JavaFX 找不到 CSS 类

java - 安卓按钮 : Shorten OnClick method

java - 如何在java中连接两个列表?

java - 在 "child"类上使用 toString,其中 "parent"是 Hiberneate/JPA 类

java - jackson :将对象视为原始