Comprensione degli Enum in Java

1

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?

    
posta vivek 03.11.2015 - 06:56
fonte

1 risposta

5

L'ultimo esempio corrisponde a una classe come questa:

public final class Ensemble {
    public static final Ensemble SOLO = new Ensemble(1);
    public static final Ensemble DUET = new Ensemble(2);
    public static final Ensemble TRIO = new Ensemble(3);
    ...
    public static final Ensemble TRIPLE_QUARTET = new Ensemble(12);

    private final int numberOfMusicians;

    private Ensemble(int size) {
        this.numberOfMusicians = size;
    }

    public int numberOfMusicians() {
        return numberOfMusicians;
    }
}
    
risposta data 03.11.2015 - 07:18
fonte

Leggi altre domande sui tag