枚举的出现主要是为了解决变量过度循环问题。
下面将通过2个枚举类AnimalOne,AnimalTwo来详细说明其用法:
下面代码主要是3个类,其实AnimalOne和AnimalTwo为枚举类,AnimalEnumTest为测试类,演示了日常工作所出现的情况。
下面将通过2个枚举类AnimalOne,AnimalTwo来详细说明其用法:
下面代码主要是3个类,其实AnimalOne和AnimalTwo为枚举类,AnimalEnumTest为测试类,演示了日常工作所出现的情况。
/*
* 普通的枚举类只是用来存储变量,
* 由于枚举也是类,所以聚类类的相关特性,
* 需要注意的是枚举类的构造方法为private,
* 在添加非变量时候,最后一个变量后面需要放分号且变量在类的最上面。
*/
public enum AnimalOne {
cat("jiafei",1),
dog("toni",2),
mouse("miki",3);
// 成员变量
private String name;
private int index;
//构造函数只能是private
private AnimalOne(String name ,int index){
this.name=name;
this.index=index;
}
/*
* 根据index获取name,由于构造函数是private的,所以无法通过引用访问,
* 可以适当的 设置成static来直接访问,否则只能通过传递
*/
public static String getAnimalNameByIndex(int index){
//遍历枚举
for(AnimalOne a:AnimalOne.values()){
if(a.getIndex()==index){
return a.getName();
}
}
return null;
}
//get set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
@Override
public String toString() {
return index+":"+name;
}
/*
* 实现带有抽象方法的枚举
* 由于类型是anum所以必须要实现抽象方法
*/
public enum AnimalTwo{
cat {
@Override
public String getColor() {
return "red";
}
},dog {
@Override
public String getColor() {
return "green";
}
},mouse {
@Override
public String getColor() {
return "yellow";
}
};
public abstract String getColor();
}
/*
* Animal test
*/
public class AnimalEnumTest {
public static void main(String[] args) {
AnimalEnumTest t=new AnimalEnumTest();
t.checkAnimalOne(AnimalOne.dog);
//测试Animal内部方法
System.out.println("--Animal one--总共:"+AnimalOne.values().length+"个");
System.out.println("--Animal one--"+AnimalOne.getAnimalNameByIndex(2));
System.out.println("--Animal two--"+AnimalTwo.cat.getColor());
}
//最常用的方式
public void checkAnimalOne(AnimalOne a){
switch(a){
case cat:
System.out.println("cat~~miaomiao~~");
break;
case dog:
System.out.println("dog~~wangwang~~");
break;
case mouse:
System.out.println("mouse~~jiji~~");
break;
}
}
}