public class EnumDome {
public static final String SUCCESS = "Y";
public static final String FAIL = "N";
enum State{
SUCCESS("Y"),
FAIL("N");
private final String state;
State(String state){
this.state = state;
}
public String getState(){
return state;
}
}
}
Apakah ciri-ciri kedua-dua cara mentakrifkan pemalar ini? Kaedah manakah yang lebih disyorkan semasa digunakan?
Soalan ini, dari peringkat tatabahasa, tidak mempunyai suspen. Hanya Baidu perbezaan antara pemalar dan penghitungan.
Tetapi dari perspektif reka bentuk, "enum" lebih baik daripada "statik akhir".
Ini mungkin agak abstrak Biar saya berikan anda contoh: Sebagai contoh, saya mentakrifkan fungsi awam (lebih tepat, kaedah awam) yang dipanggil setResponseState
.Satu ditakrifkan seperti ini: setResponseState(Keadaan rentetan) { ... }, menggunakan rentetan sebagai parameter.
Satu ditakrifkan seperti ini: setResponseState(EnumDemo.State state) { ... }, menggunakan penghitungan sebagai parameter.
Untuk definisi pertama, kaedah panggilan yang betul ialah: setResponseState(EnumDemo.SUCCESS);
Tetapi jika anda memanggilnya seperti ini: setResponseState("abcd"); adakah tiada masalah dengan sintaks bahasa JAVA?
Pengkompil masih boleh menghantarnya di sini...tetapi ia mungkin menyebabkan ralat yang serius semasa masa jalanan dan mengurangkan kebolehpercayaan sistem.
Masalah terbesar di sini ialah "parameter fungsi tidak cukup jelas", yang akan menyebabkan masalah kepada pembangun yang menggunakan kaedah ini. Dia terpaksa kembali dan menyemak kod sumber saya untuk akhirnya menentukan parameter apa yang perlu dihantar kepada saya...
Dan jika saya merangkum fungsi (kaedah) ini ke dalam satu set kod rangka kerja dan tidak memberikan kod sumber, ia akan menjadi lebih sukar bagi pembangun untuk menyemak semula. Ini akan mengurangkan kecekapan pembangunan.
Kaedah definisi menggunakan setResponseState(EnumDemo.State state) { ... } adalah sangat jelas. Sama ada BERJAYA, GAGAL atau batal.
Pembangun hampir tidak akan membuat kesilapan apabila memanggil fungsi ini (kaedah), dan tidak perlu menyemak kod sumber sama sekali.
Jadi pendekatan yang lebih ketat ialah menggunakan penghitungan. Sudah tentu ini adalah apabila mentakrifkan fungsi awam (kaedah).
Dan jika setResponseState ialah fungsi peribadi (kaedah), maka anda boleh menjadi lebih santai dan menggunakan parameter rentetan. "Kekurangan ketegasan" ini hanya perlu didedahkan secara dalaman.
Untuk menjadi lebih mengagumkan, kita perlu tampil sangat profesional secara luaran, tetapi secara dalaman, kita boleh merendahkan sedikit standard kita.
Ini adalah dua senario aplikasi pemalar dan penghitungan yang berbeza saya harap ia akan membantu anda...
Ringkasnya:
Hanya
static final
ialah satu cara untuk menentukan pemalar. Yang terakhir tidak, tetapi fungsinya serupa. Yang mana satu untuk digunakan bergantung pada keperluan andaSecara mendalam:
Alamat pos:
Pengenalan kepada penggunaan jenis Enum dalam bahasa Java
Pengenalan kepada jenis enumerasi Java (enum)