使用三元运算符的 java 语法无效

Invalid java syntax using ternary operator

我正在使用队列实现堆栈。我的 pop() 函数最初看起来像:

public void pop(){
    queue1.isEmpty() ? queue2.poll() : queue1.poll();
}

这没有编译。这个定义有什么问题?

您需要分配(或return)您正在轮询的Object。像

public void pop(){
    Object obj = queue1.isEmpty() ? queue2.poll() : queue1.poll();
}

或者(我认为你真正想要的)- 类似于

public Object pop(){
    return queue1.isEmpty() ? queue2.poll() : queue1.poll();
}

另见 JLS-15.25. Conditional Operator ? :

条件运算符仅适用于 表达式 上下文。语句不是表达式。在您的情况下,您需要使用 if 语句:

public void pop(){
    if (queue1.isEmpty()) {
        queue2.poll();
    } else {
        queue1.poll();
    }
}

如果您担心性能,请不要担心。使用 if 语句绝对没有性能损失。