java中枚举的一般用法

1.为什么要使用枚举

枚举是java中特定的一种类型,在实际使用中,它可以作为一种程序规范保证数据参数安全,合理的枚举定义,将大大增强代码的可读性。

2.枚举带来的好处
user.setStatus(0);

上面的代码片段为设置用户状态,而状态0就是我们俗称的魔鬼数字,后续人员拿到这样的代码时,除了心里骂娘,代码是基本是不敢动的。有经验的程序猿会将参数提出来定义:

/** 用户状态:有效 */
private static final int USER_STATUS_EFFECTIVE = 0;
/** 用户状态:无效 */
private static final int USER_STATUS_INVALID = 1;

即:

user.setStatus(USER_STATUS_EFFECTIVE );

但往往有时候接口中可能定义用户状态作为参数,即对于接口调用方来说只知道这是一个Integer类型的参数,即使有注释,仍然可能传入任意Integer类型的数字,参数的规范此刻将发挥重要作用,接口中可以将枚举作为参数传递。

public enum StatusEnum {

	STATUS_EFFECTIVE(0, "有效"), STATUS_INVALID(1, "无效");

	private Integer status;
	private String comment;

	private StatusEnum(Integer status, String comment) {
		this.status = status;
		this.comment = comment;
	}

	public static String getComment(Integer status) {
		if (status == null) return null;
		for (StatusEnum statusEnum : values()) {
			if (statusEnum.getStatus().intValue() == status.intValue()) {
				return statusEnum.getComment();
			}
		}
		return null;
	}

	public Integer getStatus() {
		return status;
	}

	public void setStatus(Integer status) {
		this.status = status;
	}

	public String getComment() {
		return comment;
	}

	public void setComment(String comment) {
		this.comment = comment;
	}

}
3.枚举常用用法

网上说有7种用法,具体我这里就不一一列举,只说说非常基础且常用的用法。

  • 枚举元素的调用
user.setStatus(StatusEnum.STATUS_EFFECTIVE.getStatus());
  • 枚举元素查找
public static String getComment(Integer status) {
   	if (status == null) return null;
   	for (StatusEnum statusEnum : values()) {
   		if (statusEnum.getStatus().intValue() == status.intValue()) {
   			return statusEnum.getComment();
   		}
   	}
   	return null;
   }

外部直接调用即可,方法可以自己定义。

String comment = StatusEnum.getComment(status);
4.什么情况下不适用

并不是所有的参数都适合建立枚举来进行规范,比如项目中常常有数据字典的维护,常常会增加或删除的字典类型就不适合通过枚举来定义。

5.写在最后

有人说枚举会增加内存,实际上凡事没有绝对的好处或坏处,只是说适用不适用。全是魔鬼数字代码,基本过段时间自己都不知道是什么意思了,更别指望别人来读懂你的代码。况且简单常用的编码风格,也是绝大部分程序猿能够欣然接受的,不是么?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值