Java中Enum枚举类型在项目中应用

1、什么是枚举类型?

1、枚举的本质就是穷举法,将可能会出现的情况,都列举出来,然后在列举的情况中调用。

2、枚举与class类似,也可以定义属性,构造方法,有getter和setter方法。

3、枚举类型对象的值之间比较可以通过==比较,当然也可以通过equals比较。

4、枚举类型是线程安全的,只会装载一次。

5、使用枚举类型优化if-else。

2、枚举类型基本应用?

2.1、创建基本枚举类

public enum MyColors {
	RED, BLUE, WHITE,GREEN 
}

2.1.1、枚举类型的基本调用

通过枚举打点直接获取

public static void main(String[] args) {
		System.out.println(MyColors.YELLOW);
}

2.1.2、switch中调用枚举

MyColors color = MyColors.RED;  
switch (color) {  
    case RED:   System.out.println("==red==");break;  
    case BLUE:  System.out.println("==yellow==");break;  
    case GREEN: System.out.println("==green==");break;  
}

2.1.3、循环基本枚举类型

public static void main(String[] args) {
	for (MyColors color : MyColors.values()) {
       System.out.println(color.ordinal()+"<==序数  值==>"+color);
    }
}

2210a70b1fc14e10b3e45988e4f41224.png

2.2、在枚举类型中定义方法

通过方法可以为成员属性指定特定的行为,如PARAM_ERROR表示参数错误。

2.2.1、在枚举类型中定义方法

说明1定义了两个参数code和message。

说明2需要给code和message定义set和get方法及有参构造器。

//订单状态枚举类型
public enum OrderStatus{
	PARAM_ERROR(1, "参数错误"),
    CART_EMPTY(2, "购物车为空"),
    ORDER_NOT_EXIST(3, "订单不存在");
	
    private Integer code;
    private String message;
    //构造器
	private OrderStatus(Integer code, String message) {
		this.code = code;
		this.message = message;
	}
	public Integer getCode() {
		return code;
	}
	public void setCode(Integer code) {
		this.code = code;
	}
	public String getMessage() {
		return message;
	}
	public void setMessage(String message) {
		this.message = message;
	}   
}

2.2.1、使用带方法的枚举类型

public static void main(String[] args) {		
		System.out.println(OrderStatus.ORDER_NOT_EXIST);
		System.out.println(OrderStatus.ORDER_NOT_EXIST.getCode());
		System.out.println(OrderStatus.ORDER_NOT_EXIST.getMessage());
	}

结果输出:

3bd15615f45a48cdb2fb73a4d1760f5a.png

2.2.3、循环带方法的枚举类

public static void main(String[] args) {
		for (OrderStatus status : OrderStatus.values()) {
            System.out.print("状态值=>"+status.name());
            System.out.print(" 状态序列=>"+status.ordinal());
            System.out.print(" 状态码=>"+status.getCode());
            System.out.println(" 状态信息=>"+status.getMessage());
		}
	}

73b73a72921d4d9b8e21edecb078e577.png

2.3、在接口中使用枚举类型

有时候在项目中创建的枚举类型可能会非常的多,我们可以使用枚举类型将同类型的枚举类放置在一块进行管理。

2.3.1、在接口中定义枚举类型

//订单枚举类型
public interface OrderEnum {  
	//订单状态枚举类
    enum OrderStatus implements OrderEnum{  
    	    //订单错误,订单成功,订单不存在
        ORDER_ERROR,ORDER_SUCCESS,ORDER_NOT_EXIST;  
    }  
    //订单类型枚举类
    enum OrderType implements OrderEnum{
      	//电子,食品,书籍
    	    ELECTRON,FOOD,BOOKS;
    }  
}

2.4、EnumMap的使用

通过EnumMap可以为枚举的成员属性赋予特定的行为,功能与在枚举类型中定义方法相似。

2.4.1、创建枚举类

public enum MyColors {
	RED, GREEN, BLANK, YELLOW 
}

2.4.2、创建测试类

public static void main(String[] args) {
		//使用
		EnumMap<MyColors, String> enumMap = new EnumMap<>(MyColors.class);
		enumMap.put(MyColors.RED,"红色");
		enumMap.put(MyColors.BLANK,"黑色");
		enumMap.put(MyColors.GREEN,"绿色");

		String result = enumMap.get(MyColors.RED);
		System.out.println("result==>"+result);
}
输出结果:result==>红色

2.5、EnumSet的使用

EnumSet可以获取当前的枚举中有那些成员属性

2.5.1、创建枚举类

public enum MyColors {
	RED, GREEN, BLANK, YELLOW 
}

2.5.2、创建测试类

//EnumSet导包路径  import java.util.EnumSet;

EnumSet enumSet=EnumSet.allOf(MyColors.class);
		System.out.print(enumSet+"  ");
}
//输出结果:[RED, GREEN, BLANK, YELLOW] 

3、项目使用-枚举优化if-else用法

3.1、使用if-else用法

这种用法的不好之处在于,可读性不高

        String orderStatus="PAYED";
		if(orderStatus.equals("PAYED")){
			System.out.println("====已支付====");
		}else if(orderStatus.equals("SHIPPED")){
			System.out.println("====已发货====");
		}else if(orderStatus.equals("ARRIVED")){
			System.out.println("====已到达====");
		}else if(orderStatus.equals("SIGNEDFOR")){
			System.out.println("====已签收====");
		}else{
			System.out.println("====已取消====");
		}

3.2、优化使用1-创建接口

public interface OrderProcessInterface {
	//通过订单状态,返回不同的结果
	public String orderStatus(String status);
}

3.3、优化使用2-创建枚举类型实现接口

//订单进度
public enum OrderProcessEnum implements OrderProcessInterface{
	/**
	 * PAYED:已支付,SHIPPED:已发货
     * ARRIVED:已到达,SIGNEDFOR:已签收
     * CANCELLATION:已取消
	 */
	PAYED{
		@Override
		public String orderStatus(String status) {
			// TODO Auto-generated method stub
			return "PAYED-已支付";
		}
	},
	SHIPPED{
		@Override
		public String orderStatus(String status) {
			// TODO Auto-generated method stub
			return "PAYED-已签收";
		}
	},
	ARRIVED{
		@Override
		public String orderStatus(String status) {
			// TODO Auto-generated method stub
			return "PAYED-已达到";
		}
	},
	SIGNEDFOR{
		@Override
		public String orderStatus(String status) {
			// TODO Auto-generated method stub
			return "PAYED-已签收";
		}
	},
	CANCELLATION{
		@Override
		public String orderStatus(String status) {
			// TODO Auto-generated method stub
			return "PAYED-已取消";
		}
	}
}

3.4、优化使用3-测试枚举类型

public static void main(String[] args) {
		String orderStatus="PAYED";
		String status = OrderProcessEnum.valueOf(orderStatus).orderStatus(orderStatus);
		System.out.println(status);
}
//返回值: PAYED-已支付

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java枚举类型enum用于定义一组有限的常量。在Java 1.5之前,常量通常是使用public static final修饰的变量来定义的。而使用枚举类型可以更好地组织相关联的常量,并提供更多的方法操作。枚举类型的声明格式为:enum EnumName {ENUM_VALUE1, ENUM_VALUE2, ...}。其ENUM_VALUE1、ENUM_VALUE2等是枚举类型的常量。 枚举类型Java有很多应用场景。例如,可以使用枚举类型来表示一周的星期几,定义颜色常量,定义状态等。通过使用枚举类型,可以增加代码的可读性和安全性。 此外,Java提供了一些与枚举类型相关的集合类,如EnumSet和EnumMap。EnumSet保证集合的元素不重复,而EnumMap的key是enum类型,而value可以是任意类型。这些集合类能够更方便地对枚举类型进行操作。 关于枚举类型的更多使用方法和规范,可以参考Java官方文档或阿里巴巴Java开发手册。123 #### 引用[.reference_title] - *1* *2* [Java枚举(enum)常用的用法总结](https://blog.csdn.net/qq_44866828/article/details/117380065)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *3* [Java 枚举(enum) 的常见用法和开发规范](https://blog.csdn.net/dichengyan0013/article/details/102347137)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雾林小妖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值