什么是enum(枚举):
enum是java语言关键字, 允许通过该关键字创建一个具有名的值的新类型,而这些具有名的值可以作为常规的程序组件使用。
enum基本的特性:
1. 调用enum的values方法返回一个enum实例的数组,可以循环使用values()返回的数组。
view plaincopy to clipboardprint?
//当使用关键字enum定义一个Enum类型时,编译器会自动为你生成一个类。
//这个类继承自java.lang.Enum。 Enum是一个抽象类, 实现了Comparable接口,Serializable接口
//所以可以调用compareTo方法进行enum实例的比较。Enum也实现了equals方法,
//hashCode方法。 可以使用 == 来比较两个enum实例是否相等.
public enum Shrubbery{
GROUND, CRAWLING, HANGING
}
public class EnumClass {
public static void main(String[] args) {
for(Shrubbery s : Shrubbery.values()){
//ordinal()方法返回一个int值,这是每个enum实例在声明时的次序, 从0开始。
System.out.println(s + " ordinal: " + s.ordinal());
//调用抽象类Enum的compareTo方法比较两个实例的声明次序是否相等
System.out.println(s.compareTo(Shrubbery.CRAWLING));
//调用抽象类Enum的compareTo方法比较是否同一个实例
System.out.println(s.equals(Shrubbery.CRAWLING));
//使用 == 比较是否同一个实例
System.out.println(s == Shrubbery.CRAWLING);
//返回声明该enum实例所属的enum类
System.out.println(s.getDeclaringClass());
//返回声明enum实例时的名字,与调用toString方法效果一样
System.out.println(s.name());
System.out.println("---------------------");
}
for(String s : "HANGING CRAWLING GROUND".split(" ")){
//valueOf是Enum的一个static方法,根据给定的名字返回相应的enum实例
Shrubbery shrub = Enum.valueOf(Shrubbery.class, s);
System.out.println(shrub);
}
}
}
// 代码参考与<<Think in Java 4ed>>
//当使用关键字enum定义一个Enum类型时,编译器会自动为你生成一个类。
//这个类继承自java.lang.Enum。 Enum是一个抽象类, 实现了Comparable接口,Serializable接口
//所以可以调用compareTo方法进行enum实例的比较。Enum也实现了equals方法,
//hashCode方法。 可以使用 == 来比较两个enum实例是否相等.
public enum Shrubbery{
GROUND, CRAWLING, HANGING
}
public class EnumClass {
public static void main(String[] args) {
for(Shrubbery s : Shrubbery.values()){
//ordinal()方法返回一个int值,这是每个enum实例在声明时的次序, 从0开始。
System.out.println(s + " ordinal: " + s.ordinal());
//调用抽象类Enum的compareTo方法比较两个实例的声明次序是否相等
System.out.println(s.compareTo(Shrubbery.CRAWLING));
//调用抽象类Enum的compareTo方法比较是否同一个实例
System.out.println(s.equals(Shrubbery.CRAWLING));
//使用 == 比较是否同一个实例
System.out.println(s == Shrubbery.CRAWLING);
//返回声明该enum实例所属的enum类
System.out.println(s.getDeclaringClass());
//返回声明enum实例时的名字,与调用toString方法效果一样
System.out.println(s.name());
System.out.println("---------------------");
}
for(String s : "HANGING CRAWLING GROUND".split(" ")){
//valueOf是Enum的一个static方法,根据给定的名字返回相应的enum实例
Shrubbery shrub = Enum.valueOf(Shrubbery.class, s);
System.out.println(shrub);
}
}
}
// 代码参考与<<Think in Java 4ed>>
2. 静态导入应用于enum
view plaincopy to clipboardprint?
public class StaticImport {
public static void main(String[] args) {
//没有使用static导入,引用enum实例
System.out.println(Shrubbery.GROUND);
System.out.println(Shrubbery.CRAWLING);
System.out.println(Shrubbery.HANGING);
//使用static导入,引用enum实例
System.out.println(GROUND);
System.out.println(CRAWLING);
System.out.println(HANGING);
}
}
public class StaticImport {
public static void main(String[] args) {
//没有使用static导入,引用enum实例
System.out.println(Shrubbery.GROUND);
System.out.println(Shrubbery.CRAWLING);
System.out.println(Shrubbery.HANGING);
//使用static导入,引用enum实例
System.out.println(GROUND);
System.out.println(CRAWLING);
System.out.println(HANGING);
}
}