介绍
Java枚举是一种特殊的数据类型。它是一组预定义常量的集合,这些常量在编译时被检查以确保它们仅是枚举中的一部分。使用枚举可以让代码更加可读、可维护,并且防止常见的错误。
根据value获取枚举
当我们有一个值,需要找到与其对应的枚举时,可以使用Java枚举中的valueOf()方法。该方法的参数为一个String类型的值,返回一个枚举类型的值。例如:
public enum Weekdays { MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"), THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六"), SUNDAY("星期天"); private String name; Weekdays(String name) { this.name = name; } public String getName() { return name; } } public class Main { public static void main(String[] args) { String day = "星期三"; Weekdays weekdays = Weekdays.valueOf(day); System.out.println(weekdays); } }
输出结果为:WEDNESDAY
当我们根据值来查找枚举时,需要注意以下几点:
- value值必须与枚举常量的name值相等
- 该方法区分大小写
- 如果传入的值不存在于枚举中,会抛出IllegalArgumentException异常
自定义根据value获取枚举方法
用Java枚举的valueOf()方法可以根据value值获取到枚举,而且返回的是一个枚举类型的值。但是,当我们有一些特殊的需求时(比如需要不区分大小写、需要根据value值获取对应的中文名等),就需要自定义根据value获取枚举的方法了。下面是一个例子:
public enum Gender { MAN("男性"), WOMAN("女性"); private String name; Gender(String name) { this.name = name; } public String getName() { return name; } public static Gender fromName(String name) { for (Gender gender : Gender.values()) { if (gender.name.equals(name)) { return gender; } } return null; } public static Gender fromChineseName(String chineseName) { for (Gender gender : Gender.values()) { if (gender.name.equals(chineseName)) { return gender; } } return null; } } public class Main { public static void main(String[] args) { Gender gender1 = Gender.fromName("MAN"); Gender gender2 = Gender.fromChineseName("男性"); System.out.println(gender1); System.out.println(gender2); } }
输出结果为:MAN
和MAN
在这个例子中,我们定义了两个自定义方法:fromName()
方法和fromChineseName()
方法,用来根据name和中文名获取Gender枚举类型的值。如果传入的值不存在于枚举中,这两个方法都会返回null。
总结
Java枚举是一种特殊的数据类型,它可以提高代码的可读性和可维护性。通过Java枚举的valueOf()方法,我们可以根据value值获取到枚举类型的值。同时,自定义根据value获取枚举的方法,可以满足特殊的需求。
在实际开发中,我们应该根据自己的需求来使用Java枚举,避免滥用、误用。
本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/javapeixun2gr.html
郑重声明:
本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
我们不承担任何技术及版权问题,且不对任何资源负法律责任。
如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。
如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!