您的位置:首页 > 其它

enum(枚举)

2011-06-10 13:41 190 查看
什么是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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: