Petua Java 5: Pemalar Java

Minggu ini kami membuat beberapa pemalar yang mempunyai semua kelebihan menggunakan kemudahan pemproses C untuk menentukan pemalar masa kompilasi dan kod yang disusun secara bersyarat.

Java telah menyingkirkan keseluruhan konsep praprosesor teks (jika Anda mengambil Java sebagai "keturunan" C / C ++). Namun, kita dapat memperoleh manfaat terbaik dari beberapa fitur praprosesor C di Java: pemalar dan penyusunan bersyarat.

Salah satu ciri yang baik dari preprocessor C adalah keupayaan untuk menentukan pemalar masa kompilasi menggunakan nama teks untuk mewakili beberapa nilai. Ini menjadikannya lebih mudah untuk dibaca dan dikekalkan. Ia juga lebih pantas pada waktu berjalan daripada menggunakan pemboleh ubah biasa.

Ciri praprosesor C yang boleh disalahgunakan adalah penggunaan #define bersama dengan #ifdef dan rakan-rakan untuk menyusun keseluruhan blok kod dengan syarat. Saya katakan ini boleh diperdebatkan kerana orang sering menggunakan kemudahan ini untuk menangani masalah khusus platform (dan itu baik dan buruk)

Dalam C, seseorang dapat menentukan beberapa pemalar dalam fail header melalui:

#tentukan MY_BDATE 10 #tentukan SILLY_PLATFORM 

dan kemudian mendapatkan akses ke pemalar tersebut dengan menggunakan #include untuk memasukkannya ke dalam fail kod, dan kemudian menggunakannya:

fprintf (stderr, "Hari lahir saya pada% d" "th! \ n", MY_BDATE); 

Setara di Java dapat dilakukan dengan membuat pemboleh ubah akhir statik umum dalam antara muka Java :

antara muka ConstantStuff {public static final int MY_BDATE = 10; boolean akhir statik awam SillyPlatform = true; }

Kemudian kita dapat mengaksesnya dengan menggunakan importuntuk menjadikan antara muka dapat dilihat oleh kita dan kemudian menggunakan pemalar:

System.out.println ("Hari lahir saya pada" + ConstantStuff.MY_BDATE + "th!"); 

Praprosesor C secara kondisional dapat menghilangkan kawasan teks yang besar sekiranya pemalar praprosesor yang diberikan itu atau tidak ditentukan.

#jika didefinisikan (SILLY_PLATFORM) / * Banyak kod jahat untuk menangani kebodohan platform * SILLY. * / #else / * Kod untuk menangani platform lain yang normal. * / #endif

Banyak orang meratapi bahawa kemampuan ini tidak ada di Java. Ingatlah, salah satu sebab mengapa Java begitu indah adalah bahawa bahasa itu lebih baik ditentukan, jadi kod khusus sistem seperti itu tidak semestinya diperlukan.

Bagaimanapun, anda masih boleh mendapatkan kod yang disusun bersyarat dari penyusun secara langsung! Anda hanya menggunakan pemalar boolean akhir statik awam sebagai syarat untuk penyataan jika biasa . Penyusun Java cukup pintar untuk mengenalinya sebagai kes khas dan ia dapat sepenuhnya menghilangkan ujian dan kod cabang bersyarat yang sesuai.

Jadi tulis sahaja penyataan bersyarat seperti biasa.

if (ConstantStuff.SillyPlatform) {// Kod yang akan digunakan sekiranya platform benar * pada waktu kompilasi *. } lain {// Kod yang akan digunakan jika platform salah * pada waktu kompilasi *. }

Saya tidak tahu tentang anda, tetapi saya benci menulis nama antara muka yang panjang sebelum menggunakan pemalar tersebut. Jadi, saya hanya perlu kelas saya yang akan menggunakan mereka pemalar melaksanakan yang antara muka . Maka saya hanya boleh menggunakan namanya secara langsung, dengan anggapan tidak ada pertembungan nama (dalam hal ini anda harus membezakannya menggunakan nama penuh).

Saya telah mengumpulkan semua perkara yang menyeronokkan ini dalam beberapa aplikasi Java yang ringkas. Pemalar (//www.javaworld.com/javatips/javatip5/Constants.java) melaksanakan yang muka dan menggunakan pemalar langsung manakala Constants2 (//www.javaworld.com/javatips/javatip5/Constants2.java) menggunakan nama layak untuk capai pemalar.

John D. Mitchell merupakan lulusan Sains Komputer UC-Berkeley yang lain yang membuang kafein, gula, dan terlalu sedikit tidur. Dia menghabiskan tiga tahun untuk mengusahakan perisian PDA di Geoworks untuk mendapatkan stok yang sebenarnya lebih berharga daripada kertas dinding. Dia mendapat jaminan dari pekerjaannya sehari setelah peluncuran umum pertama Java untuk mengembangkan applet dan penyusun Java. Dia membiayai ketagihan Java dengan menulis penyusun, sistem Tcl / Tk, Perl, C ++, dan Java. Waktu luangnya yang banyak dihabiskan dengan menyederhanakan kumpulan berita comp.lang.tcl.announce dan menulis buku Java yang hebat.

Kisah ini, "Petua Java 5: Pemalar Java" pada awalnya diterbitkan oleh JavaWorld.