gpt4 book ai didi

java - java枚举器中的私有(private)构造函数

转载 作者:行者123 更新时间:2023-12-01 17:29:01 27 4
gpt4 key购买 nike

下面这两个 Java 中 enum 的定义有什么区别,第一个比第二个有什么优点?

public enum Suit {//first definition
CLUBS (1), SPADES (2), HEARTS (3), DIAMONDS (4);
int value;
private Suit(int v) { value = v; }
};

public enum Suit {//second definition
CLUBS, SPADES, HEARTS, DIAMONDS;
};

最佳答案

在此示例中,除了明显的“int 值”之外没有任何区别。

一般来说,Java 5+ 中的枚举是一个有一些限制的类。您不能像使用普通类那样使用“new”自行创建枚举实例。

另一方面,枚举可以像常规类甚至方法一样具有数据字段。

如果您的枚举代表行星,并且枚举的每个实例都包含一些真正有用的数据(例如行星半径),该怎么办?在这种情况下,您将编写如下代码:

public enum Planet {

EARTH(6000), VENUS(5000);
int radius;
private Planet(int radius) {this.radius = radius;}

// now define a getter:

public int getRadius() {

return radius;
}
}

注意这里的 setter/getter 。它将允许直接从枚举实例访问此类数据。

例如:

public void somewhereInYourCode(...) {

.....
Planet p = getPlanet(); // get the planet from your system

int radius = p.getRadius();
....
}

希望这有帮助

关于java - java枚举器中的私有(private)构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12838234/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com