2016-05-30 7 views
-6

こんにちはJavaでこれが可能ですか?booleanの代入後演算子はありますか?

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

明確にする。上記は動作しますが、最初にfalseを割り当てます。私が達成したいのは、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

私たちにお話してみませんか? – TDG

+0

あなたは 'if(flag){flag = false;真を返します。 } '? –

+0

@KevinCruijssenはい、うまくいくでしょう。その場合のために何かがある場合だけ興味があった。 –

答えて

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

私はですが、本当にそれはしません。不必要に鈍いです。

+4

@MuratK .:疲労。漠然とした質問が投稿されたとき(元の質問は非常に曖昧である)、人々はそれに疲れているので、彼らは間違いなく、もっと厳しく反応するか、実生活では。投稿する前にあなたの質問を見直す時間を費やす価値があります。あなたが含まれていない情報を仮定しているかどうか、簡潔であるかどうかを確認しようとしているかどうか、疑問がないかどうかなどを聞いてください。あなたの最終版。 –

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

いいえ、それを行う方法はありませんが。

どうしてですか?

Java言語デザイナーに本当の答えを尋ねる必要がありますが、そういった提案を却下したと思います。 Javaはで、は学習しやすく、読みやすく、理解しやすい言語に設計されています。簡潔な方法で「巧妙」なことをするように設計された演算子を追加することは、言語を覚えるのをより困難にし、読みにくくなる可能性があります... 平均プログラマー。そして、演算子がほんの少数のユースケースで本当に便利な場合、それは読みやすさ対ユーティリティ引数を勝つことさえ困難にします。

また、Javaに新しい機能を追加することは、他の(既存の)言語機能とのやり取りのため想像以上に技術的に難しい場合があります。

実際、これを裏付ける先例があります。 Project CoinのJava 7/8リビジョン提案の1つは、elvis operatorをJavaに追加することでした。提案は考慮され...そして最終的にdismissed

関連する問題