Java枚举是否被认为是原始types或引用types?
如果我有一个枚举对象,它被认为是一个原始的或参考?
这是一个参考types。
与许多语言不同, enum
是一组整型常量,Java枚举是不可变的对象实例。 您可以通过调用ordinal()
来获取枚举实例的数值。
你甚至可以将你自己的成员添加到枚举类,如下所示:
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);
枚举工作的方式实际上与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 }}
通过在类加载上实例化不同的套装,确保这些将相互排斥,并且私有构造函数确保不会创build更多的实例。
这些可以通过==或等于来比较。
Java 5枚举的工作方式几乎相同,但有一些必要的function来支持序列化等。
我希望这个背景可以进一步阐明。
本文主要向您展示如何实现枚举,正如SLaks所说,它们是引用。
枚举是引用types,因为它们可以有方法,如果它们有主要方法,也可以从命令行执行。
请参阅Sun / Oracle中的以下“Planet”示例
http://download.oracle.com/javase/tutorial/java/javaOO/enum.html