我正在使用 Java 进行枚举。如我所见,可以重载枚举构造函数。我的问题是,在这种情况下,是否有可能从构造函数重载中受益,因为据我所知,既不可能自己调用​​它,也不会强制编译器调用您想要调用的特定函数?

感谢您花时间向我澄清这些问题,并希望它对可能有相同问题的其他人有用。

最佳答案

您确实调用它 - 在设置枚举值时。例如:

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
}

我过去曾在各种项目中使用过这种能力。枚举是 Java 最好的特性之一——当然是我在 C# 中工作时从 Java 中错过的少数东西之一。 (它们可以更巧妙地实现,我敢肯定,但是......)

10-08 13:09