java枚举的例子_如何理解java枚举,看例子

先来看一下不用枚举怎么表示常量:

//常量类

classNum {public static String ONE = "ONE";public static String TWO = "TWO";public static String THREE = "THREE";public static String FOUR = "FOUR";public static String FIVE = "FIVE";

}//测试类

public classTest{public static voidmain(String[] args) {

System.out.println(Num.THREE);

}

}

再来看一下用了枚举怎么表示常量:

//常量类(枚举类)

enumNum {

ONE,TWO,THREE,FOUR,FIVE

}//测试类

public classTest{public static voidmain(String[] args) {

System.out.println(Num.THREE);

}

}

当然枚举还能用于 switch

//常量类(枚举类)

enumNum {

ONE,TWO,THREE,FOUR,FIVE

}//测试类

public classTest{public static voidmain(String[] args) {

Num num=Num.THREE;switch(num) {caseONE:

System.out.println(Color.ONE);break;caseTWO:

System.out.println(Color.TWO);break;caseTHREE:

System.out.println(Color.THREE);break;caseFIVE:

System.out.println(Color.FIVE);break;

}

}

}

那么问题来了!

枚举的成员是什么数据类型?  看下面的例子:

//常量类(枚举类)

enumNum {

ONE(1),TWO(2),THREE(3),FOUR(4),FIVE(5);//构造方法(构造方法放在枚举成员的后面)

Num (intdata){}

}//测试类

public classTest{public static voidmain(String[] args) {

System.out.println(Num.FOUR);

}

}

通过上面的例子可以看出,枚举侧成员就是一个对象,成员对象的数据,与构造方法相关,每个成员对象的数据结构相同。

这里我们就可以理解Java枚举的一类相同的对象,这些对象内部的数据结构与枚举类的构造方法相关。

接下来进一步验证枚举成员的数据结构是不是与构造方法相关:

//常量类(枚举类)

enumNum {

ONE(1, "one"),TWO(2, "two"),THREE(3, "three"),FOUR(4, "four"),FIVE(5, "five");//构造方法

Num (intdata,String str){}

}//测试类

public classTest{public static voidmain(String[] args) {

System.out.println(Num.FOUR);

}

}

通过上面的例子可以看出,枚举成员的数据结构只与构造方法相关。

那怎么取出枚举成员的数据呢?通过观察▲可以看出枚举类中还没有get和set方法。

//常量类(枚举类)

enumNum {

ONE(1, "one"),TWO(2, "two"),THREE(3, "three"),FOUR(4, "four"),FIVE(5, "five");//构造方法

Num (intdata,String str){this.data=data;this.str=str;

}//成员变量

intdata;

String str;//get方法

intgetData(){returndata;

}

String getStr(){returnstr;

}

}//测试类

public classTest{public static voidmain(String[] args) {

System.out.println(Num.FOUR.getData());

System.out.println(Num.FOUR.getStr());

}

}

通过通过添加枚举类的成员变量和get方法之后成功获取了,成员的数据。

这时再来回看java枚举类,就能发现Java枚举类和普通的类没什么不同,只是枚举成员就像数组对象一样存放,枚举成员的数据结构与构造方法相关。

添加set方法之后就能修改它的值了:

//常量类(枚举类)

enumNum {

ONE(1, "one"),TWO(2, "two"),THREE(3, "three"),FOUR(4, "four"),FIVE(5, "five");//构造方法

Num (intdata,String str){this.data=data;this.str=str;

}//成员变量

intdata;

String str;//get方法

intgetData(){returndata;

}

String getStr(){returnstr;

}//set方法

void setData(intdata){this.data =data;

}voidsetStr(String str){this.str =str;

}

}//测试类

public classTest{public static voidmain(String[] args) {

System.out.println(Num.FOUR.getStr());

Num.FOUR.setStr("四");

System.out.println(Num.FOUR.getStr());

}

}

枚举侧常规用法:

//常量类(枚举类)

enumNum {

ONE(1, "小米"),TWO(2, "华为"),THREE(3, "苹果"),FOUR(4, "菠萝"),FIVE(5, "坦克");//构造方法

Num (intindex,String name){this.index =index;this.name =name;

}//成员变量

intindex;

String name;//get方法

intgetIndex(){returnindex;

}

String getName(){returnname;

}//set方法

void setIndex(intindex){this.index =index;

}voidsetName(String name){this.name =name;

}//根据index获取 name

static String getNameByIndex(intidx){for(Num n : Num.values()) {if (n.getIndex() ==idx) {returnn.name;

}

}return "没有找到";

}

}//测试类

public classTest{public static voidmain(String[] args) {

System.out.println(Num.getNameByIndex(3));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值