Java:如何在枚举中使用构造函数重载?

akh*_*ess 4 java enums constructor overloading

我正在使用Java中的枚举.正如我所看到的,可以重载枚举构造函数.我的问题是,在这种情况下,根本不可能从构造函数重载中获益,因为据我所知,它既不能自己调用​​也不能强制编译器调用你想要调用的特定代码?

感谢您花时间向我澄清这些内容并希望它对于可能有同样问题的其他人也有用.

Jon*_*eet 16

在设置枚举值时,您可以调用它.例如:

public enum Person
{
    FRED("Frederick", "Fred"),
    PETE("Peter", "Pete"),
    MALCOLM("Malcolm"); // No nickname

    private final String nickname;
    private final String name;

    private Person(String name, String nickname)
    {
        this.name = name;
        this.nickname = nickname;
    }

    private Person(String name)
    {
        this(name, name); // Just use the name as the nickname too
    }

    // getNickname and getName
}
Run Code Online (Sandbox Code Playgroud)

我过去曾将这种能力用于各种项目.枚举是Java最好的功能之一 - 当然是我在C#中工作时想念Java的少数几件事之一.(他们可以更加整洁地实施,我敢肯定,但......)