枚举类型
程序员文章站
2022-04-24 11:07:43
...
下面是一个典型的枚举类型的例子:
public enuni Size {
SMALL , MEDIUM, LARGE, EXTRAJARGE
};
实际上, 这个声明定义的类型是一个类, 它刚好有 4 个实例, 在此尽量不要构造新对象。
因此, 在比较两个枚举类型的值时, 永远不需要调用 equals, 而直接使用“= =” 就可以了。
如果需要的话, 可以在枚举类型中添加一些构造器、 方法和域。当然,构造器只是在构造枚举常量的时候被调用。下面是一个示例:
public enum Size {
SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL");
private String abbreviation;
private Size(String abbreviation) {
this.abbreviation = abbreviation;
}
public String getAbbreviation() {
return abbreviation;
}
}
所有的枚举类型都是 Enum 类的子类。它们继承了这个类的许多方法。其中最有用的一个是 toString, 这个方法能够返回枚举常量名。例如, Size.SMALL.toString( ) 将返回字符串”SMALL”。
toString 的逆方法是静态方法 valueOf。例如, 语句:
Size s = Enum.valueOf(Size,class, "SMALL");
将 s 设置成 Size.SMALL。
每个枚举类型都有一个静态的 values 方法, 它将返回一个包含全部枚举值的数组。 例如,如下调用
Size[] values = Size.valuesO ;
返回包含元素 Size.SMALL,Size.MEDIUM,Size.LARGE和Size.EXTRA_LARGE 的数组。
ordinal方法返回enum声明中枚举常量的位置,位置从0开始计数。例如:Size.
MEDIUM. ordinal() 返回 1。
下面是枚举类型的常用方法:
static Enum valueOf(Class enumClass , String name ) |
返回指定名字、给定类的枚举常量。 |
String toString( ) | 返回枚举常量名。 |
int ordinal ( ) | 返回枚举常量在 enum 声明中的位置,位置从 0 开始计数。 |
int compareTo( E other ) |
如果枚举常量出现在 Other 之前,则返回一个负值;如果 this=other,则返回 0;则,返回正值。枚举常量的出现次序在 enum 声明中给出。 |
public static void main(String[] args) throws Exception{
Size s1 = Enum.valueOf(Size.class, "SMALL");
System.out.println(s1); //SMALL
Enum size = Size.SMALL;
String s2 = size.toString();
System.out.println(s2); //SMALL
int s3 = size.ordinal();
System.out.println(s3); //0
Enum size2 = Size.MEDIUM;
int s4 = size.compareTo(size2);
System.out.println(s4); //-1
}
上一篇: C语言练习笔记 ~ 枚举类型