1.枚举变量
对于变量只需在某个有限集合中取值的变量,可以采用枚举类型的变量。枚举需要自行定义,例如:
enum Size { SAMLL, MEDIUM, LARGE, EXTRA_LARGE };
然后就可以声明这种类型的变量:
Size s = Size.MEDIUM;
2.枚举类
先举一个例子:
public enum Size
{
SAMLL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL");
private String abbreviation;
private Size(String abbreviation) { this.abbreviation = abbreviation; }
public String getAbbreviation() { return abbreviation};
}
首先,枚举类就是类的一种类型。上面代码所包含的东西有:
- 实例域
private String abbreviation;
- 构造器(此处的构造器为私有。)
private Size(String abbreviation)//在构造枚举常量时被调用。
- 方法
public String getAbbreviation()
而对于枚举常量:没有包括括号内的内容(“S”)
SAMLL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL");
当某个常量被构建时,如SAMLL("S")
,会调用构造器private Size(String abbreviation)
。将"S"
作为参数传入。
所有枚举类型都是Enum的子类,他们继承了这个类的很多方法:
toString
:返回枚举常量名
如Size.SMALL.toString()
将返回字符串“SMALL”。valueOf
:toString
的逆方法:将常量名设置为某个值。
如:Size s = Enum.valueOf(Size.class, "SMALL");
将s设置为Size.SMALL。
下面给出代码:
package enums;
import java.util.*;
public class EnumTest {
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.print("Enter a size(SMALL. MEDIUM, LARGE, EXTRA_LARGE):");
String input = in.next().toUpperCase();
Size size = Enum.valueOf(Size.class, input);
System.out.println("size=" + size);
System.out.println("abbreviation=" + size.getAbbreviation());
if (size == Size.EXTRA_LARGE)
System.out.println("Good job -- you paid attention to the _.");
}
}
enum Size
{
SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL");
private Size(String abbreviation) {this.abbreviation = abbreviation;}
public String getAbbreviation() {return abbreviation;}
private String abbreviation;
}