2017-10-22 2 views
1

Ich habe versucht, meine enum von Karten in Strings durch Überschreiben der toString-Methode, aber ich bekomme immer den ganzen Namen in Großbuchstaben, auch wenn ich den Namen in Kleinbuchstaben eingegeben. Also habe ich versucht, getter getName zu machen, und es gibt mir immer den Namen in Großbuchstaben. Mache ich etwas falsch? Weil es mit einem anderen Enum funktioniert, das ich benutze. dieseEnum toString() überschreiben

public enum Color { 
    HEART ("♥"), //previously "heart" 
    DIAMOND ("♦"), //previously "diamond" 
    CLOVER ("♣"), //previously "clover" 
    SPADE ("♠"), //previously "spade" 
    NA ("NA"); 

    private String name; 


    private Color(String name) { 
     this.name = name; 
    } 

    public String getName() { 
     return this.name(); 
    } 

}; 
+7

Sie überschreiben nicht 'toString' - was macht Sie denken, Sie sind? Sie sollten '@override public String toString() {return name; } ' –

+1

In Ihrer getName-Methode sollten Sie dies tun.name nicht this.name() –

+0

@Jon Skeet ist eigentlich nur der Syntaxfehler Leute haben mich bemerkt. Tbh Ich frage mich, warum es mich davor nicht gewarnt hat, weil keine Methode name() existiert, aber es läuft immer noch als ob. –

Antwort

0

Wechsel:

public String getName() { 
     return this.name(); 
    } 

Um dies:

public String getName() { 
     return this.name; 
    } 
+1

Danke, ich bin ein dummer Esel. Wie oft vermisse ich solche Syntaxfehler und verschwende so viel Zeit, sie zu bemerken. –

+1

@AltanRapsied: Es war kein Syntaxfehler - wenn es gewesen wäre, hätte es nicht kompiliert. Es war ein logischer Fehler, weil Sie die Methode 'name()' aufgerufen haben, anstatt das Feld 'name' zu ​​verwenden, was Sie wollten. –

Verwandte Themen