SLa*_*aks 57
这是一种参考类型.Java原语是boolean byte short char int long float double.
您可以通过调用获取枚举常量的值ordinal(),EnumSet和EnumMap使用它iterator并"以自然顺序遍历元素(枚举常量的声明顺序)"
您甚至可以将自己的成员添加到枚举类中,如下所示:
public enum Operation {
PLUS { double eval(double x, double y) { return x + y; } },
MINUS { double eval(double x, double y) { return x - y; } },
TIMES { double eval(double x, double y) { return x * y; } },
DIVIDE { double eval(double x, double y) { return x / y; } };
// Do arithmetic op represented by this constant
abstract double eval(double x, double y);
}
//Elsewhere:
Operation op = Operation.PLUS;
double two = op.eval(1, 1);
Run Code Online (Sandbox Code Playgroud)
小智 12
枚举的工作方式实际上与它们在引入Java 5之前的使用方式并没有太大的不同:
public final class Suit {
public static final Suit CLUBS = new Suit();
public static final Suit DIAMONDS = new Suit();
public static final Suit HEARTS = new Suit();
public static final Suit SPADES = new Suit();
/**
* Prevent external instantiation.
*/
private Suit() {
// No implementation
}}
Run Code Online (Sandbox Code Playgroud)
通过在类加载上实例化不同的套装,确保它们是互斥的,私有构造函数确保不会创建更多的实例.
这些可以通过==或等于进行比较.
Java 5枚举的工作方式几乎相同,但有一些必要的功能来支持序列化等.
我希望这一背景能够进一步阐明.