Java 枚举toString()重写

Java 枚举toString()重写,java,enums,tostring,Java,Enums,Tostring,我一直试图通过重写toString方法将我的卡片枚举转换成字符串,但我一直以大写形式获取所有名称,即使我以小写形式输入名称也是如此。所以我试着做了一个getter getName,它一直给我大写的名字。我做错什么了吗?因为它与我正在使用的另一个枚举一起工作 public enum Color { HEART ("♥"), //previously "heart" DIAMOND ("♦"), //previously "diamond" CLOVER ("♣"), //p

我一直试图通过重写toString方法将我的卡片枚举转换成字符串,但我一直以大写形式获取所有名称,即使我以小写形式输入名称也是如此。所以我试着做了一个getter getName,它一直给我大写的名字。我做错什么了吗?因为它与我正在使用的另一个枚举一起工作

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();
    }

};
更改此项:

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

public String getName() {
        return this.name;
    }
更改此项:

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

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

您没有覆盖
到字符串
-什么让您认为您是?您应该在getName方法中使用
@Override public String toString(){return name;}
,您应该这样做。name而不是this。name()@Jon Skeet实际上只是人们让我注意到的语法错误。Tbh我想知道为什么它没有警告我,因为不存在方法name(),但它仍然像这样运行。name()方法确实存在-这是你的问题。@cppnearlier:
name()
是从
Enum
继承的。请注意,如果您从一开始就提供了,我们将能够很快解决这个问题。您没有覆盖
到字符串
-什么让您认为您是?您应该在getName方法中使用
@Override public String toString(){return name;}
,您应该这样做。name而不是this。name()@Jon Skeet实际上只是人们让我注意到的语法错误。Tbh我想知道为什么它没有警告我,因为不存在方法name(),但它仍然像这样运行。name()方法确实存在-这是你的问题。@cppnearlier:
name()
是从
Enum
继承的。请注意,如果您从一开始就提供了一个语法错误,我们将能够很快解决这个问题。谢谢,我是一个笨蛋。我有多少次会错过这样的语法错误,并浪费这么多时间去注意它们。@AltanRapsied:这不是语法错误-如果是,它就不会被编译。这是一个逻辑错误,因为您调用了
name()
方法,而没有使用您想要的
name
字段。谢谢,我是个蠢货。我有多少次会错过这样的语法错误,并浪费这么多时间去注意它们。@AltanRapsied:这不是语法错误-如果是,它就不会编译了。这是一个逻辑错误,因为您调用了
name()
方法,而没有使用所需的
name
字段。