你好,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;
答案 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。