2017-05-19 2 views
0
public enum ProductCategory { 
    FOOD, BEVERAGE, DEFAULT; 

private final String label; 

private ProductCategory(String label){ 
this.label = label; 
} 

public String getLabel(){ 
     return label; 
} 

Ich möchte Methode GetLabel() in dieser Enum-Klasse implementieren, aber ich bekomme Fehler: "Der Konstruktor ProductCategory() ist undefined".Constructor Enum Fehler

ich bereits Konstruktor haben, was ich brauche, was sonst muss ich schreiben? Ich habe versucht, Standardkonstruktor zu schreiben, aber wieder bekomme ich einen Fehler.

P.S. Ich bin totaler Anfänger in Java.

+0

als Randnotiz einen ENUM-Konstruktor spezifiziert als 'private' redundant ist. –

+0

Mögliche Duplikat [Wie kann ich erklären, Aufzählungen mit Java] (http://stackoverflow.com/questions/7007137/how-can-i-declare-enums-using-java) – Yahya

+0

Man kann nicht über einen Standardkonstruktor schreiben. Der Standardkonstruktor ist derjenige, der vom Compiler für eine Klasse bereitgestellt wird, für die kein Konstruktor geschrieben wurde. –

Antwort

3

Der Fehler wird von der Deklaration von enum Mitglieder kommen: da der Konstruktor String label dauert, müssen Sie den String liefern, der Konstruktor übergeben:

FOOD("food"), BEVERAGE("bev"), DEFAULT("[default]"); 
1

Die nur noch Konstruktor du hast erfordert eine Zeichenkette in übergeben werden - aber alle enum-Werte (FOOD, BEVERAGE, DEFAULT) tun Strings nicht angeben, so dass sie den Konstruktor nicht aufrufen können.

zwei Optionen:

  • einen parameterlosen Konstruktor hinzufügen:

    private ProductCategory() {} 
    

    Dies würde aber nicht assoziiert Etikett mit Ihren ENUM-Werten.

  • Geben Sie das Etikett auf jeden Wert:

    FOOD("Food"), BEVERAGE("Beverage"), DEFAULT("Default"); 
    

Letzteres ist fast sicher, was Sie wollen.

0

Enum Konstruktor aufgerufen werden, während die Enum-Mitglieder selbst zu erklären.

public enum ProductCategory 
    { 
     FOOD("label1"), 
     BEVERAGE("label2"), 
     DEFAULT("label3"); 

     private final String label; 

     ProductCategory(String label) 
     { 
      this.label = label; 
     } 

     public String getLabel() 
     { 
      return label; 
     } 
    } 
0
public enum ProductCategory { 
    FOOD("FOOD"), BEVERAGE("BEVERAGE"), DEFAULT("DEFAULT"); 

    private final String label; 

    private ProductCategory(String label) { 
     this.label = label; 
    } 

    public String getLabel() { 
     return label; 
    } 
}