Nel libro Java efficace è stato detto che:
The basic idea behind Java’s enum types is simple: they are classes that export one instance for each enumeration constant via a public static final field. Enum types are effectively final, by virtue of having no accessible constructors.
Quindi, se ho un enum come:
public enum Orange {NAVEL, TEMPLE, BLOOD}
Quindi, deve essere simile a:
public class Orange implements Comparable , implements Serializable {
private Orange() {}
public static final Orange NAVEL = new Orange();
public static final Orange TEMPLE = new Orange();
public static final Orange BLOOD = new Orange();
public int compareTo(Orange other) {}
}
A questo punto sembra tutto a posto, ma dopo un po 'di tempo gli esempi diventano complicati, ad esempio sono ancora perplesso sulla seguente definizione di enum
.
public enum Ensemble {
SOLO(1), DUET(2), TRIO(3), QUARTET(4), QUINTET(5),
SEXTET(6), SEPTET(7), OCTET(8), DOUBLE_QUARTET(8),
NONET(9), DECTET(10), TRIPLE_QUARTET(12);
private final int numberOfMusicians;
Ensemble(int size) {
this.numberOfMusicians = size;
}
public int numberOfMusicians() {
return numberOfMusicians;
}
}
Quale potrebbe essere il suo equivalente di classe simile e c'è una proprietà length
su di esso?