Apakah ada cara yang lebih baik untuk meniadakan boolean di Jawa daripada yang sederhana?
if (theBoolean) {
theBoolean = false;
} else {
theBoolean = true;
}
Apakah ada cara yang lebih baik untuk meniadakan boolean di Jawa daripada yang sederhana?
if (theBoolean) {
theBoolean = false;
} else {
theBoolean = true;
}
Jawaban:
theBoolean = !theBoolean;
!!bool == !(!(bool)) == bool
.
--
operator (sebenarnya, dua dari mereka, bersama dengan dua ++
operator), tetapi tidak mendefinisikan !!
operator. Jika mau, -(-(integer))
Anda dapat menggunakan ruang putih di antara dua -
karakter. Tetapi !!
diurai sebagai dua !
operator terlepas dari ruang putih.
theBoolean ^= true;
Lebih sedikit penekanan jika variabel Anda lebih panjang dari empat huruf
Sunting : kode cenderung memberikan hasil yang bermanfaat ketika digunakan sebagai istilah pencarian Google. Kode di atas tidak. Bagi mereka yang membutuhkannya, itu XOR bitwise seperti yang dijelaskan di sini .
theBoolean = !theBoolean;
atautheBoolean = theBoolean ? false : true;
Cara "jelas" (bagi kebanyakan orang)
theBoolean = !theBoolean;
Cara "terpendek" (sebagian besar waktu)
theBoolean ^= true;
Cara "paling visual" (paling tidak pasti)
theBoolean = theBoolean ? false : true;
theMethod( theBoolean ^= true );
Karena operator penugasan selalu mengembalikan apa yang telah ditetapkan, ini akan beralih nilai melalui operator bitwise, dan kemudian mengembalikan nilai yang baru ditugaskan untuk digunakan dalam pemanggilan metode.
C
pasti, tetapi di Java
dalamnya tidak diizinkan untuk mencampur boolean dan integer (juga hal-hal seperti while(1)
tidak mungkin di Jawa).
Jika Anda menggunakan nilai Boolean NULL dan menganggapnya salah, coba ini:
static public boolean toggle(Boolean aBoolean) {
if (aBoolean == null) return true;
else return !aBoolean;
}
Jika Anda tidak memberikan nilai Boolean NULL, coba ini:
static public boolean toggle(boolean aBoolean) {
return !aBoolean;
}
Ini adalah yang terbersih karena mereka menunjukkan maksud dalam metode tanda tangan, lebih mudah dibaca dibandingkan dengan ! operator, dan dapat dengan mudah didebug.
Pemakaian
boolean bTrue = true
boolean bFalse = false
boolean bNull = null
toggle(bTrue) // == false
toggle(bFalse) // == true
toggle(bNull) // == true
Tentu saja, jika Anda menggunakan Groovy atau bahasa yang memungkinkan metode ekstensi, Anda dapat mendaftarkan ekstensi dan cukup lakukan:
Boolean b = false
b = b.toggle() // == true
Boolean
dan benar-benar beralih dalam metode (tetapi masih agak ambigu).
Jawaban ini muncul ketika mencari "fungsi java invert boolean". Contoh di bawah ini akan mencegah alat analisis statis tertentu gagal membangun karena logika percabangan. Ini berguna jika Anda perlu membalikkan boolean dan belum membangun unit test yang komprehensif;)
Boolean.valueOf(aBool).equals(false)
atau sebagai alternatif:
Boolean.FALSE.equals(aBool)
atau
Boolean.FALSE::equals
Boolean.FALSE::equals
ke fungsi pemetaan alih-alih menulis lambda kecil
Jika Anda tidak melakukan sesuatu yang sangat profesional, Anda selalu dapat menggunakan kelas Util. Mis, kelas util dari proyek untuk kelas.
public class Util {
public Util() {}
public boolean flip(boolean bool) { return !bool; }
public void sop(String str) { System.out.println(str); }
}
kemudian hanya membuat objek Util
Util u = new Util();
dan punya sesuatu untuk kembaliSystem.out.println( u.flip(bool) );
Jika Anda akan berakhir menggunakan hal yang sama berulang-ulang, gunakan metode, dan terutama jika itu lintas proyek, buat kelas Util. Entah apa standar industri. (Pemrogram berpengalaman merasa bebas untuk memperbaiki saya)
Kelas BooleanUtils
mendukung negasi dari boolean. Anda menemukan kelas ini di commons-lang: commons-lang
BooleanUtils.negate(theBoolean)
Sebelum:
boolean result = isresult();
if (result) {
result = false;
} else {
result = true;
}
Setelah:
boolean result = isresult();
result ^= true;