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



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

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

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

您需要分配(或返回)正在轮询的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。条件运算符? :

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

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

如果你关心性能,那就不要担心。使用if语句绝对不会对性能造成影响。

最新更新