【发布时间】:2015-09-07 08:56:01
【问题描述】:
我正在使用队列实现堆栈。我的 pop() 函数最初看起来像:
public void pop(){
queue1.isEmpty() ? queue2.poll() : queue1.poll();
}
这没有编译。这个定义有什么问题?
【问题讨论】:
-
您的 queue1.isEmpty 方法是否返回布尔值?
-
queue2.poll()和queue1.poll()是否返回 same 类型? -
编译产生了什么 Throwable(异常或错误)?如果您正在实现一个 ArrayDeque,它有一个需要覆盖的 pop 方法——它非常适合堆栈实现。
-
虽然三元运算符的这种使用在 Java 中是非法的,但有趣的是它在 C/C++ 中是合法的。 (不是说好坏。)
标签: java ternary-operator