2017-06-05 3 views
-1
public Tipo getTipo() { 
    return this.Importo < 0.0 ? Tipo.USCITA : Tipo.ENTRATA; 
} 

public int compareTo(Movimento m) { 
    if (this.idConto != this.idConto) { 
     return this.idConto - this.idConto; 
    } 
    return this.DataMov.compareTo(this.DataMov); 
} 

public static enum Tipo { 
    ENTRATA,// here i have this error : The constructor Movimento.Tipo() is undefined 
    USCITA;// here is the same : The constructor Movimento.Tipo() is undefined 


    private Tipo(String string2, int n2) { 
    } 
} 

Ich habe bereits Konstruktor, den ich brauche, was muss ich noch schreiben?Der Konstruktor ist nicht definiert? Enum Fehler

+2

Sie schrieb einen Konstruktor, der zwei Argumente übernimmt, aber kein Standardkonstruktor. Das bedeutet, dass der Compiler keinen arg-Konstruktor zur Verfügung stellt. Sie sollten einen zur Verfügung stellen. – duffymo

Antwort

1

Ich bin mir nicht sicher, wie Sie Enum definieren möchten. Grundsätzlich gibt es zwei Lösungen für diese:

1. keine Enum Parameter definieren

public static enum Tipo { 
    ENTRATA, 
    USCITA; 
} 

2. Definieren Sie Enum mit Parametern

public static enum Tipo { 
    ENTRATA("Entrata", 1), 
    USCITA("Uscita", 2); 

    private String string; 
    private int integer; 

    private Tipo(String string, int integer) { 
     this.string = string; 
     this.integer = integer; 
    } 
} 
+0

es funktioniert !! Danke vielmals –

0

Sie sind falsch enum geschrieben.

public enum abc { 

    ENTRATA("abc", 1),// here i have this error : The constructor Movimento.Tipo() is undefined 
    USCITA("xyz", 2);// here is the same : The constructor Movimento.Tipo() is undefined 


    private abc(String string2, int n2) { 
    } 

}

+0

Wenn Sie einen Konstruktor mit 2 Argumenten in enum haben, dann enthält enum variable zwei Argumente, da jede Variable in enum als Objekt fungiert. –

1

Sie schrieb einen Konstruktor, der zwei Argumente übernimmt, aber kein Standard-Konstruktor. Das bedeutet, dass der Compiler keinen arg-Konstruktor zur Verfügung stellt. Sie sollten einen privaten Konstruktor bereitstellen oder den privaten Konstruktor entfernen.

Ich sehe keinen Grund für den privaten Konstruktor mit zwei Argumenten. Sie haben keine privaten Datenmitglieder in Ihrem Enum.

Warum ist Ihr Enum statisch? Entferne das.

public enum Tipo { 
    ENTRATA, USCITA; 

} 
+0

Es ist eine ziemliche Herausforderung für OP, einen Standardkonstruktor zu schreiben, da er kein Compiler ist. – Tom

+0

Ich nehme an, das ist sein Code. Der Code, den ich gepostet habe, hat einen Konstruktor ohne Argumente. Ich verstehe diesen Kommentar nicht. – duffymo

+0

Sie haben * geschrieben "Sie haben einen Konstruktor geschrieben, der zwei Argumente, aber keinen Standardkonstruktor verwendet. Das bedeutet, dass der Compiler keinen Konstruktor ohne Argumente bereitstellt." *, Aber es ist genau umgekehrt. Der Konstruktor erstellt keinen ** Standard ** -Konstruktor, weil OP seinen eigenen definiert hat. Also muss OP den Konstruktor ** no-arg ** erstellen. – Tom

Verwandte Themen