Dengan cara yang sama ketika Anda mendefinisikan nama tabel dalam database atau kelas di Jawa Anda menggunakan singular untuk enum itu juga pilihan terbaik. Lihat saja bagaimana Anda akan menggunakannya.
Mari kita tulis sebuah contoh:
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
class Appointment {
private Day day;
public void setDay(Day day) {
this.day = day;
}
}
Dalam bentuk tunggal Anda melihat dengan jelas niat atribut hari. "hari" ini adalah hari dalam minggu perjanjian ini akan diadakan. Kalau tidak, tanda tangan dari metode ini akan ditetapkan hari (hari hari) dan pasti banyak orang akan bertanya-tanya apakah penunjukan bisa terjadi dalam lebih dari satu hari.
Jika Anda bekerja di perusahaan yang memiliki shift 48 jam, Anda dapat mencoba mendefinisikan sesuatu seperti:
public enum Days {
MONDAY_TUESDAY, WEDNESDAY_THURSDAY, FRIDAY_SATURDAY
}
Dengan begitu Anda bisa mengatur hari-hari Anda akan bekerja. Tapi tetap saja itu akan terlihat aneh dan ada pilihan yang lebih baik dan menggunakan bentuk tunggal:
public enum Shift {
MONDAY_TUESDAY, WEDNESDAY_THURSDAY, FRIDAY_SATURDAY
}
Sekarang Anda benar-benar menunjukkan arti enum. Biasanya dalam domain apa pun Anda akan menemukan bahwa menggunakan singular untuk enum adalah pilihan terbaik karena setiap konstanta dalam enum hanyalah satu elemen.
Anda juga menyebutkan .NET. Sebuah "flags" enum di .NET hanya berarti bahwa ketika Anda mengharapkan enum itu sebagai parameter apa yang benar-benar Anda dapatkan adalah daftar elemen enum itu (disimpan sebagai integer).
// Define an Enum with FlagsAttribute.
[FlagsAttribute]
enum MultiHue : short
{
Black = 0,
Red = 1,
Green = 2,
Blue = 4
};
public void setMultiHue(MultiHue hues);
Anda dapat melakukan hal yang sama di Jawa, tetapi enum masih akan tunggal:
public enum Hue {
BLACK, RED, GREEN, BLUE;
private final Integer hue;
Hue() {
this.hue = 1 << this.ordinal();
}
public Integer toFlag() {
return this.hue;
}
}
public class MultiHue {
private Integer hues = 0;
public void addHue(Hue hue) {
this.hues |= hue.toFlag();
}
public boolean hasHue(Hue hue) {
return (this.hues & hue.toFlag()) != 0;
}
}
Yang lebih mudah dan lebih jelas (walaupun menggunakan lebih banyak memori) untuk melakukan ini dengan Java hanya menggunakan Daftar.