1.枚举类型更规范,在函数形参定义为枚举类型的时候,只接受枚举类型的常量。比起普通的更安全
枚举类型成员默认被public static final修饰
class EnumTest
{
public static void doit(int val){ //可以接受任何参数
switch(val){
case ConstantsI.Constants_A:
System.out.println("ConstantsI.Constants_A");
break;
case ConstantsI.Constants_B:
System.out.println("ConstantsI.Constants_B");
break;
default:break;
}
}
public static void doit(ConstantsE val){ //只接受枚举类型常量,更安全
switch(val){
case Constants_A: //注意这里的写法 不是ConstantsE.Constants_A
System.out.println("ConstantsE.Constants_A");
break;
case Constants_B:
System.out.println("ConstantsE.Constants_B");
break;
default:break;
}
}
public static void main(String[] args)
{
EnumTest.doit(1);
EnumTest.doit(ConstantsE.Constants_A);
}
}
interface ConstantsI //一般定义
{
public static final int Constants_A = 1;
public static final int Constants_B = 2;
}
enum ConstantsE{ //枚举
Constants_A,
Constants_B
}
2.枚举类型的构造方法,作用?
class EnumTest
{
public static void main(String[] args){
System.out.println(ConstantsE.Constants_A.getDescription()); //输出:我是枚举类型A
}
}
enum ConstantsE{ //枚举
Constants_A("我是枚举类型A"),
Constants_B("我是枚举类型B");
private String description;
private ConstantsE(String _description){
this.description = _description;
}
public String getDescription(){
return this.description;
}
}
3.五子棋中的枚举类型棋子的定义
package com.ck.wuziqi;
/**
* 棋子
* @author Administrator
*
*/
public enum Chessman {
/**
* 黑、白棋子
*/
BLACK("●"),WHITE("○");
//相当于 publi static final Chessman BLACK = new Chessman("●");
private String chessman;
private Chessman(String chessman){
this.chessman = chessman;
}
public String getChessman(){
return this.chessman;
}
}
使用时,得到黑子的字符串"●"
Chessman.BLACK.getChessman()