2017-10-22 3 views
1

toStringメソッドをオーバーライドして文字列にカードの列挙型を取得しようとしましたが、名前を小文字で入力しても大文字ですべての名前を取得し続けます。だから私はgetter getNameをやろうとしましたが、それは大文字の名前を与え続けます。私は何か間違っているのですか?別の列挙型を使用しているため、私は使用しています。Enum toString()override

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

あなたは 'toString'オーバーライドしていない - あなたがしていると思わせる何か?あなたは '@Override public String toString(){return name; } ' –

+1

getNameメソッドではthis.name(this.name()ではありません) –

+0

@Jon Skeetは実際には人々が私に気付かせた構文エラーでした。 Tbhなぜメソッド名()は存在しないが、それはまだ実行されているので、それについて私に警告しなかったのだろうか? –

答えて

0

変更この:これに

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

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

ありがとう私はダムのお尻です。どのくらいの頻度でこのような構文エラーが発生するのか、あまりにも多くの時間を浪費します。 –

+1

@AltanRapsied:構文エラーではありませんでした。もしそれがあったとしても、コンパイルされませんでした。あなたが望むものである 'name'フィールドを使うのではなく、' name() 'メソッドを呼び出したので、論理エラーでした。 –