我正在使用 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 中错过的少数东西之一。 (它们可以更巧妙地实现,我敢肯定,但是......)