Java 5が列挙型の新機能を思いついたときに、なぜ人々が定数だけを格納するためにインターフェースを使用しているのか、私にはまだはっきりしていません。
interface OlympicMedal {
static final String GOLD = "Gold";
static final String SILVER = "Silver";
static final String BRONZE = "Bronze";
}
そして別のクラスが現在それを実装しています。
public class OlympicAthlete implements OlympicMedal {
public OlympicAthlete( int aId ){
//..elided
}
//..elided
public void winEvent( ){
//the athlete gets a gold medal
//note the reference is not qualified, as
//in OlympicMedal.GOLD
fMedal = GOLD;
}
// PRIVATE //
private String fMedal; //possibly null
}
上記のように、同じことは列挙型によっても簡単に確立できます。上記のように定数を格納する選択肢があるかどうかを教えてください。列挙型またはインターフェイスを選択する必要があります。
列挙型は次のようになります...
public enum OlympicMedal {
GOLD, SILVER, BRONZ
}
ただし、クラスがこの定数にアクセスする方法を教えてください。