布尔值有 post 赋值运算符吗?

Is there a post-assignment operator for a boolean?

你好,在 Java 中有这样的可能吗?

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

澄清一下。上面的工作,但首先分配 false 。我想要实现的是 return 标志一旦 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;

之前一次性完成

不,没有任何内置功能可以满足您的描述。你会用一个临时变量来做到这一点:

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

或根据您进一步编辑问题("The structure looks something like this"),您可以使用! :

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);

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

看看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());

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

为什么不呢?

好吧,您需要向 Java 语言设计者询问真正的答案,但我想他们会立即驳回这样的提议。 Java 设计 是一种易于学习、阅读和理解的语言。添加旨在以简洁的方式做 "clever" 事情的运算符可能会使语言更难学习,更难阅读......对于 普通 程序员。而且,如果运算符仅在极少数用例中真正有用,那么可读性与实用性的争论就更难取胜了。

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

实际上,有先例可以支持这一点。 Project Coin 中的 Java 7 / 8 修订提案之一是添加 elvis operator to Java. The proposal was considered ... and ultimately dismissed.