GetBoolean Java Boolean: Berguna Meskipun Tidak Sempurna

Metode Boolean.getBoolean (String) adalah metode statis yang dapat berguna sekarang dan nanti. Sangat mudah untuk mengacaukan metode ini sebagai metode yang mengembalikan Boolean yang sesuai berdasarkan String yang disediakan (seperti apa yang dilakukan Boolean.valueOf (String) dan Boolean.parseBoolean (String)), tetapi dokumentasi Javadoc untuk metode ini menjelaskan apa itu benar-benar: Boolean.getBoolean(String)metode "Mengembalikan nilai true jika dan hanya jika properti sistem yang dinamai oleh argumen ada dan sama dengan string 'true'."

The Boolean.getBoolean(String)Metode menyediakan pengembang dengan metode untuk menentukan apakah properti tertentu diatur ke "benar." Ini hanya mengembalikan "benar" jika properti ditentukan dan nilai yang didefinisikan adalah beberapa bentuk "benar" di mana kasus "benar" tidak menjadi masalah. Kasus nama properti itu sendiri adalah case sensitive, tetapi nilainya ( "benar", "TRUE", "benar", "True", dll) adalah kasus di sensitif.

Kode Java berikut mendemonstrasikan Boolean.getBoolean(String)aksinya.

DemonstrateBooleanGetBoolean.java

package dustin.examples; import static java.lang.System.out; /** * Demonstrate the usefulness of Boolean.getBoolean(String) despite its naming * issue. */ public class DemonstrateBooleanGetBoolean { /** * Main function for executing examples demonstrating use and effects of * Boolean.getBoolean(String). */ public static void main(final String[] arguments) { final String basicPropertyName = "i.am.here"; final String basicUppercasePropertyName = basicPropertyName.toUpperCase(); final String wereHereProperty = "were.here.property"; final String wasHereProperty = "was.here.property"; out.println(basicPropertyName + " is " + Boolean.getBoolean(basicPropertyName)); out.println(basicUppercasePropertyName + " is " + Boolean.getBoolean(basicUppercasePropertyName)); out.println(wereHereProperty + " is " + Boolean.getBoolean(wereHereProperty)); out.println(wasHereProperty + " is " + Boolean.getBoolean(wasHereProperty)); if (Boolean.getBoolean("i.am.set")) { System.out.println("I'm set!!!"); } else { System.out.println("I'm NOT set!!!"); } } } 

Dengan menjalankan kelas di atas dengan properti yang ditentukan melalui opsi -D peluncur aplikasi Java, nuansa dari ditampilkan Boolean.getBoolean(String). Hasil yang terdapat dalam cuplikan layar berikutnya menunjukkan bahwa Boolean.getBoolean(String)memang kembali trueketika nama properti tertentu ditentukan dan ditentukan dengan nilai String "benar" dengan kasus apa pun untuk empat huruf yang membentuk "benar". Di sisi lain, mengubah kapitalisasi nama properti memang memengaruhi hasil Boolean.getBoolean(String). Dengan kata lain, sementara "true" dan "TRUE" sama dari perspektif nilai properti , "i.am.here" dan "I.AM.HERE" adalah nama properti yang sama sekali berbeda dari perspektif nama properti .

Ada beberapa penggunaan untuk Boolean.getBoolean(String)metode ini, termasuk logika runtime bersyarat berdasarkan apakah parameter disetel atau tidak. Entri blog Harap gunakan Boolean.getBoolean (SOME_FLAG_KEY) mencakup penggunaan ini secara lebih rinci.

Meskipun metode ini sangat berguna, tidak diragukan lagi bahwa ini tidak dinamai sebaik mungkin. Beberapa posting blog mengungkapkan kekecewaan pengembang Java dengan pilihan penamaan API dan kelas hosting untuk metode statis ini: I Fell in the Trap of Boolean.getBoolean () [Oktober 2007], Java API Pitfalls: Boolean.getBoolean (String) [Oktober 2005 ], Some Fun with Boolean.getBoolean (String) [Juli 2009], Boolean.getBoolean tidak seperti yang Anda pikirkan [Oktober 2003], dan Ever Been Busted oleh Boolean.getBoolean (String) [bulan ini!].

Kesimpulan

Boolean.getBoolean(String)Terkadang saya menemukan metode yang sangat berguna, tetapi saya juga setuju dengan pengembang Java lain yang dikutip di atas bahwa ini bukan salah satu keputusan API yang lebih baik. Seperti yang disarankan beberapa orang lain, sepertinya itu mungkin lebih cocok di kelas java.lang.System dan saya lebih suka nama metode seperti "isPropertyTrue (String)". Karena itu, setelah seseorang menyadari kehalusan ini dan perbedaan antara Boolean.getBoolean (String) dan Boolean.valueOf (String) (atau Boolean.parseBoolean (String), tersedia sejak J2SE 5), kedua metode dapat diterapkan dengan tepat dan menjadi sangat berharga dalam situasi tertentu.

Artikel ini, "getBoolean Java Boolean: Berguna Meskipun Tidak Sempurna" awalnya diterbitkan oleh JavaWorld.