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

时间:2015-06-22 01:13:56

标签: java ternary-operator

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

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

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

2 个答案:

答案 0 :(得分:1)

您需要分配(或返回)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 ? :

答案 1 :(得分:1)

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

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

如果你担心表现,那就不要了。使用if语句绝对没有性能损失。