一、定义枚举的关键字
一般定义枚举的关键字是enum,跟class一样定义一个类类似的说法
注意的点(变量的使用):
* 所有的枚举类型都是 public static final
* SON == public static final Home SON;
* 枚举不能被实例化(不能被new)
* 1.直接使用
* 2.编译器会生成values()和valuesOf()两个方法
* 2.1:values():返回该枚举的所有变量(已数组的形式)
* 2.2:valuesof():根据名称获取枚举变量,传入一个参数后返回这个参数的结果
package EnumCain;
/**
* enum:枚举关键字(用法与class类似)
*/
public enum Home {
//枚举中的变量都要大写,每个变量之间用,隔开且最后一个不需要逗号
GRANDFATHER,GRANDMATHER,
FATHER,MATHER,
ME,WIFE,
SON,DAUGHTER
}
增强型的枚举类型
package EnumCain;
public enum Homes {
GRANDFATHER(1,"爷爷"),
GRANDMATHER(2,"奶奶"),
FATHER(3,"父亲"),
MATHER(4,"母亲"),
ME(5,"本人"),
WIFE(6,"妻子"),
SON(7,"儿子"),
DAUGHTER(8,"女儿");
private int code;//地位
private String name;//名臣
Homes(int code,String name){
this.code=code;
this.name=name;
}
//定义静态的一个方法,通过code返回name信息
public static String cainFly(int code){
for(Homes homes:Homes.values()){
if(code==homes.getCode()){
return homes.getName();
}
}
return null;
}
public int getCode(){
return code;
}
public String getName(){
return name;
}
}
package EnumCain;
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
Home home=Home.ME;
System.out.println(home);//ME
Home[] homes=Home.values();
System.out.println(Arrays.toString(homes));
//[GRANDFATHER, GRANDMATHER, FATHER, MATHER, ME, WIFE, SON, DAUGHTER]
Home home1=Home.valueOf("ME");
System.out.println(home1);//ME
for(int i=1;i<Homes.values().length;i++){
String s = Homes.cainFly(i);
System.out.println(s);
//一次输出全部的变量
}
}
}
如果数据量比较大的时候可以直接通过枚举类定位到想要的方法即可
public class Test {
public static void main(String[] args) {
System.out.println(Homes.DAUGHTER.getName());
System.out.println(Homes.DAUGHTER.getCode());
}
}