最新在朋友的代码中看到的一种比较新颖一点的枚举类的实用例子,赶紧比较新颖的所以就想着先记下来。
假如你有个需求,必须要求前端传入的码值为 0 或者 1 ,传入其他的均为非法值,如果你不想使用if else 进行判断。这时就可以使用枚举来轻松解决这个问题、代码示例:
- public enum BinaryValue {
- ZERO(0),
- ONE(1);
-
- private final int value;
-
- BinaryValue(int value) {
- this.value = value;
- }
-
- public int getValue() {
- return value;
- }
-
- public static BinaryValue fromInt(int value) {
- for (BinaryValue binaryValue : BinaryValue.values()) {
- if (binaryValue.value == value) {
- return binaryValue;
- }
- }
- throw new IllegalArgumentException("传入的值必须是0或1");
- }
- }
-
假如你想根据你传入的码值获取对应的字符串值、代码示例如下:
-
- public enum SevenKingdoms {
- ONE(1, "国家一"),
- TWO(2, "国家二"),
- THREE(3, "国家三"),
- FOUR(4, "国家四"),
- FIVE(5, "国家五"),
- SIX(6, "国家六"),
- SEVEN(7, "国家七");
-
- private final int value;
- private final String countryName;
-
- SevenKingdoms(int value, String countryName) {
- this.value = value;
- this.countryName = countryName;
- }
-
- public int getValue() {
- return value;
- }
-
- public String getCountryName() {
- return countryName;
- }
-
- public static SevenKingdoms getByValue(int value) {
- for (SevenKingdoms kingdom : values()) {
- if (kingdom.getValue() == value) {
- return kingdom;
- }
- }
- throw new IllegalArgumentException("无效的国家代码: " + value);
- }
- }