是否有布尔值的赋值后运算符?

时间:2016-05-30 14:00:17

标签: java boolean boolean-expression

你好,Java可能会这样吗?

boolean flag = true;
if(flag) return flag = false; // return true and assign false to flag afterwards

澄清。以上作品,但首先是假的。我希望实现的是在true之后立即返回标记,然后将其重置为false

结构看起来像这样:

boolean flag = false;
// some operations which can set the flag true
if(flag){ flag = false ; return true};
// some operations which can set the flag true
if(flag){ flag = false ; return true};
// some operations which can set the flag true
if(flag){ flag = false ; return true};

我正考虑在return flag = false;

之前一次性完成

3 个答案:

答案 0 :(得分:5)

不,没有任何内置功能可以完成你所描述的内容。您可以使用临时变量:

boolean flag = true;
boolean returnValue = flag;
flag = false;
return returnValue;

或者根据您的进一步编辑问题("结构看起来像这样"),您可以使用!

boolean flag = false;
// some operations which can set the flag true
if(flag) return !(flag = false);
// some operations which can set the flag true
if(flag) return !(flag = false);
// some operations which can set the flag true
if(flag) return !(flag = false);

真的,真的不会那样做。这是不必要的迟钝。

答案 1 :(得分:2)

看看java.util.concurrent.AtomicBoolean。我没有试过这个,但它可能会给你提出的行为:

AtomicBoolean flag = new AtomicBoolean(true);
System.out.println("First, I'm " + flag.get());
Boolean was = flag.getAndSet(false);
System.out.println("I was " + was + " but now I'm " +
    Flag.get());

答案 2 :(得分:2)

不,没有办法做到这一点。

为什么不呢?

那么你需要向Java语言设计师提出真正的答案,但我想他们会不可避免地驳回这样的提议。 Java 设计是一种易于学习,阅读和理解的语言。添加旨在以简洁的方式做“聪明”事情的运算符可能会使语言更难学习,并且更难以阅读......对于普通程序员。而且,如果运算符仅在少数用例中真正有用,那么可读性与效用性论证就更难获胜。

此外,由于与其他(现有)语言功能的交互,向Java添加新功能通常在技术上比您想象的更困难。

实际上,有先例支持这一点。 Project Coin中的Java 7/8修订提案之一是向Java添加elvis operator。该提案被认为是......最终dismissed

相关问题