Aynı şekilde, bir veritabanında veya Java'da bir sınıfta bir tablo adı tanımlarken, numaralandırmalar için tekil kullandığınızda da en iyi seçenektir. Sadece nasıl kullanacağınıza bakın.
Bir örnek yazalım:
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
class Appointment {
private Day day;
public void setDay(Day day) {
this.day = day;
}
}
Tekil formda, gün özelliğinin amacını açıkça görürsünüz. "gün" bu randevu yapılacak haftanın günü. Aksi takdirde yöntemin imzası ayarlanmıştıGün (Gün günü) ve kesin olarak birçok insan randevunun bir günden fazla olup olmayacağını merak edecektir.
48 saat vardiyası olan bir şirkette çalışıyorsanız, aşağıdaki gibi bir şey tanımlamaya çalışabilirsiniz:
public enum Days {
MONDAY_TUESDAY, WEDNESDAY_THURSDAY, FRIDAY_SATURDAY
}
Bu şekilde çalışacağınız günleri ayarlayabilirsiniz. Ama yine de garip görünecek ve daha iyi bir seçenek var ve tekil formu kullanmaktır:
public enum Shift {
MONDAY_TUESDAY, WEDNESDAY_THURSDAY, FRIDAY_SATURDAY
}
Şimdi gerçekten sıralamanın anlamını gösteriyorsun. Genellikle herhangi bir alanda, bir numaralandırma için tekil kullanmanın en iyi seçenek olduğunu göreceksiniz çünkü enumdaki her sabit sadece bir elementtir.
.NET'ten de bahsediyorsunuz. .NET'te bir "bayraklar" numaralaması, yalnızca bu numaralandırmayı bir parametre olarak beklediğinizde, aldığınız öğenin (tamsayı olarak depolanan) öğelerinin bir listesi olduğu anlamına gelir.
// Define an Enum with FlagsAttribute.
[FlagsAttribute]
enum MultiHue : short
{
Black = 0,
Red = 1,
Green = 2,
Blue = 4
};
public void setMultiHue(MultiHue hues);
Java'da da aynısını yapabilirsiniz, ancak numaralandırma hala tekil olacaktır:
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;
}
}
Java ile bunu yapmak daha kolay ve net (daha fazla bellek kullanıyor olsa da) sadece bir Liste kullanmaktır.