我有一个 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
我认为问题在于 monthlyFibs
用 Queue<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/