GetBoolean Java Boolean: Berguna Walaupun Tidak Sempurna

Kaedah Boolean.getBoolean (String) adalah kaedah statik yang boleh berguna sekarang dan kemudian. Sangat mudah untuk mengelirukan kaedah ini sebagai kaedah yang entah bagaimana mengembalikan Boolean yang sesuai berdasarkan String yang disediakan (seperti apa yang dilakukan oleh Boolean.valueOf (String) dan Boolean.parseBoolean (String)), tetapi dokumentasi Javadoc untuk kaedah ini menjelaskan apa itu betul-betul: Boolean.getBoolean(String)kaedah "Mengembalikan benar jika dan hanya jika sifat sistem yang dinamakan oleh argumen wujud dan sama dengan rentetan 'benar'."

The Boolean.getBoolean(String)Cara menyediakan pemaju dengan satu kaedah untuk menentukan jika harta tertentu ditetapkan kepada "benar." Ia hanya mengembalikan "benar" jika harta itu ditentukan dan nilai yang ditakrifkan adalah beberapa bentuk "benar" di mana kes "benar" tidak menjadi masalah. Huruf nama harta itu sendiri peka huruf besar-kecil, tetapi nilainya ("benar", "BENAR", "benar", "Benar", dll.) Adalah huruf besar -kecil .

Kod Java berikut menunjukkan Boolean.getBoolean(String)tindakan.

TunjukkanBooleanGetBoolean.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 melaksanakan kelas di atas dengan sifat yang ditentukan melalui pilihan -D peluncur aplikasi Java, nuansa Boolean.getBoolean(String)ditunjukkan. Hasil yang terkandung dalam snapshot skrin berikutnya menunjukkan bahawa Boolean.getBoolean(String)memang akan kembali trueapabila nama harta tertentu ditentukan dan ditentukan dengan nilai String "true" dengan mana-mana huruf untuk empat huruf yang membentuk "true". Sebaliknya, menukar kes nama harta tanah mempengaruhi hasil dari Boolean.getBoolean(String). Dengan kata lain, sementara "benar" dan "BENAR" adalah sama dari perspektif nilai harta tanah , "i.am.here" dan "I.AM.HERE" adalah nama harta yang sama sekali berbeza dari perspektif nama harta tanah .

Terdapat beberapa kegunaan untuk Boolean.getBoolean(String)kaedah tersebut termasuk logik runtime bersyarat berdasarkan sama ada parameter ditetapkan atau tidak. Catatan blog Sila gunakan Boolean.getBoolean (SOME_FLAG_KEY) merangkumi penggunaan ini dengan lebih terperinci.

Walaupun kaedah ini sangat berguna, tidak ada keraguan bahwa metode ini tidak disebut namanya dengan baik. Beberapa catatan blog menyatakan kekecewaan pemaju Java dengan pilihan penamaan API dan kelas hosting untuk kaedah statik: I Fell in the Trap of Boolean.getBoolean () [Oktober 2007], Java API Pitfalls: Boolean.getBoolean (String) [Oktober 2005 ], Beberapa Keseronokan dengan Boolean.getBoolean (String) [Julai 2009], Boolean.getBoolean bukan seperti yang anda fikirkan [Oktober 2003], dan Pernah Dipercayai oleh Boolean.getBoolean (String) [bulan ini!].

Kesimpulannya

Boolean.getBoolean(String)Kadang kala saya menjadi kaedah yang sangat berguna, tetapi saya juga bersetuju dengan pembangun Java lain yang disebutkan di atas bahawa ia bukan salah satu keputusan API yang lebih baik. Seperti yang dicadangkan oleh beberapa orang lain, sepertinya ia lebih sesuai di kelas java.lang.System dan saya lebih suka nama kaedah seperti "isPropertyTrue (String)". Yang dikatakan, setelah seseorang mengetahui kehalusan ini dan perbezaan antara Boolean.getBoolean (String) dan Boolean.valueOf (String) (atau Boolean.parseBoolean (String), tersedia sejak J2SE 5), kedua-dua kaedah dapat diterapkan dengan tepat dan sangat berharga dalam situasi tertentu.

Kisah ini, "getBoolean Java Boolean: Berguna Walaupun Tidak Sempurna" pada awalnya diterbitkan oleh JavaWorld.