java枚举类型enum用法_Java枚举类型——Enum的简单用法

401faf4fa4d0ed328a71e86e500cefd2.png

枚举类型是Java1.5的新特性,是指由一组固定的常量组成合法的类型。Java中由关键字enum来定义一个枚举类型。我们可以使用枚举来取代用public final static修饰的一批相关数据。如我们定义红绿灯的颜色:

public final static int RED = 1;

public final static int GREEN = 2;

public final static int YELLOW = 3;

当需要使用时,通过switch来获取值:

public static String getValue(int color) {

StringBuffer result = new StringBuffer();

switch (color) {

case RED:

result.append("红灯");

break;

case GREEN:

result.append("绿灯");

break;

case YELLOW:

result.append("黄灯");

break;

default:

result.append("颜色有误");

break;

}

return result.toString();

}

调用方法时需要传入参数,但是却无法保证传入的数据是合法的。

例如:System.out.println(getValue(RED));//正常

System.out.println(getValue(6));//存在类型不安全问题,编译不报错,但是数据不合要求

若使用枚举方式来代替,修改一下设置的方式就可以比较容易的获取到值:

定义:

public enum Color {

RED("红灯"), GREEN("绿灯"), YELLOW("黄灯");

private String value = "";

private Color(String value) {

this.value = value;

}

public String getValue() {

return value;

}

}

调用测试方法:

public static void test(Color c){

String val = c.getValue();

System.out.println(val);

}

test(Color.RED);

输出:红灯

如何传入的值不是Color中的枚举值,则编译时就不通过。

同时枚举还可以设置各种颜色的灯亮时对应的行动:

在枚举中添加行动的抽象方法,并在枚举实例中实现:

public enum Color {

RED("红灯") {

@Override

public String action() {

return "停";

}

}, GREEN("绿灯") {

@Override

public String action() {

return "行";

}

}, YELLOW("黄灯") {

@Override

public String action() {

return "等一等";

}

};

private String value = "";

private Color(String value) {

this.value = value;

}

public String getValue() {

return value;

}

//行动的抽象方法

public abstract String action();

}

调用测试方法:

public static void test(Color c){

String val = c.getValue();

String action = c.action();

System.out.println(val);

System.out.println(action);

}

test(Color.RED);

输出结果:红灯

综上所述,使用枚举可以传入参时进行规则校验,参数只能为Color中的三个枚举值,否则在编译阶段就不能通过,保证了程序类型的安全性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值