枚举类型用法

    在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。

    例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据元素组成了四季的“数据集”。

在java中如何更好的使用这些“数据集”呢?因此枚举便派上了用场,以下代码详细介绍了枚举的用法。

 

1、颜色枚举

package com.meiju;

/**
 * 简单应用,color
 */
public enum ColorEnum {
	blue, wite, red, green, yellow;
	
	private final static String cloe = "blue";
    public static ColorEnum getSeason() {
        if ("blue".equals(cloe))
            return blue;
        else
            return wite;
    }
}

    

package com.test;

import com.meiju.ColorEnum;

public class ColorEnumTest {
	public static void main(String[] args) {
		System.out.println("颜色:" + ColorEnum.wite);
		System.out.println("颜色:" + ColorEnum.red);
	}
}

    输出结果:

         颜色:wite

         颜色:red

 

2、性别枚举

package com.meiju;

/**
 * 性别,实现带有构造器的枚举
 */
public enum GenderEnum {
	//通过括号赋值,而且必须带有一个参构造器和一个属性跟方法,否则编译出错
    //赋值必须都赋值或都不赋值,不能一部分赋值一部分不赋值;如果不赋值则不能写构造器,赋值编译也出错
    MAN("MAN"), WOMEN("WOMEN");
    
    public final String value;

    //构造器默认也只能是private, 从而保证构造函数只能在内部使用
    GenderEnum(String value) {
        this.value = value;
    }
    
    public String getValue() {
        return value;
    }
}

   

package com.test;

import com.meiju.GenderEnum;

public class GenderEnumTest {
	public static void main(String[] args) {
		System.out.println("性别:" + GenderEnum.MAN);
		System.out.println("性别:" + GenderEnum.MAN.getValue());
	}
}

   输出结果:

        性别:MAN

        性别:MAN

 

3、管理员枚举

package com.meiju;

import java.util.ArrayList;
import java.util.List;

public enum NameEnum {
	//枚举
	XMMCODE("XMMCODE", "熊某某"), LMMCODE("LMMCODE", "李某某"), ZMMCODE("ZMMCODE", "张某某");
	
	//枚举的类和value
	private String key;
    private String value;
    
    private NameEnum(String key, String value) {
        this.key = key;
        this.value = value;
    }

    public static NameEnum getEnum(String key) {
        for (NameEnum type : NameEnum.values()) {
            if (type.key.equals(key)) {
                return type;
            }
        }
        return null;
    }

    public static List<NameEnum> getEnumList() {
        List<NameEnum> enumList = new ArrayList<NameEnum>();

        for (NameEnum e : NameEnum.values()) {
            enumList.add(e);
        }
        return enumList;
    }

    public String getKey() {
        return key;
    }

    public String getValue() {
        return value;
    }
}

    

package com.test;

import com.meiju.NameEnum;

public class NameEnumTest {
	public static void main(String[] args) {
		System.out.println("管理员key:" + NameEnum.XMMCODE);
		System.out.println("管理员key:" + NameEnum.XMMCODE.getKey());
		System.out.println("管理员姓名:" + NameEnum.XMMCODE.getValue());
	}
}

    输出结果:

         管理员key:XMMCODE

         管理员key:XMMCODE

         管理员姓名:熊某某

 

4、订单状态枚举

package com.meiju;

/**
 * 订单状态, 实现带有抽象方法的枚举
 */
public enum OrderStateEnum {
	//已取消 
	CANCEL {public String getName() {return "已取消";}},
	//待审核 
	WAITCONFIRM {public String getName() {return "待审核";}},
	//等待付款 
	WAITPAYMENT {public String getName() {return "等待付款";}},
	//正在配货 
	ADMEASUREPRODUCT {public String getName() {return "正在配货";}},
	//等待发货 
	WAITDELIVER {public String getName() {return "等待发货";}},
	//已发货 
	DELIVERED {public String getName() {return "已发货";}},
	//已收货 
	RECEIVED {public String getName() {return "已收货";}};

	public abstract String getName();
}

    

package com.test;

import com.meiju.OrderStateEnum;

public class OrderStateEnumTest {
	public static void main(String[] args) {
		System.out.println("订单状态:" + OrderStateEnum.CANCEL);
		System.out.println("订单状态:" + OrderStateEnum.CANCEL.getName());
	}
}

    输出结果:

        订单状态:CANCEL

        订单状态:已取消

 

5、索引枚举

package com.meiju;

/**
 * 索引
 */
public enum SerialEnum {
	//位数,中文解说,code,开始值
	SERIAL_NUMBER(12, "流水号", "SERIAL_NUMBER", 100000000000L), 
    TEST_ID(12, "测试序列", "TEST_ID", 100000000000L),	
	TEST_INDEX(10, "测试索引", "TEST_INDEX", 1L);

	private Integer serialEnumLength;
	private String  SerialEnumName;
	private String  SerialEnumCode;
	private Long    startEnumSn;

	SerialEnum(Integer serialEnumLength, String SerialEnumName, String SerialEnumCode, Long startEnumSn) {
		this.SerialEnumCode = SerialEnumCode;
		this.serialEnumLength = serialEnumLength;
		this.SerialEnumName = SerialEnumName;
		this.startEnumSn = startEnumSn;
	}

	public Integer getSerialEnumLength() {
		return serialEnumLength;
	}

	public void setSerialEnumLength(Integer serialEnumLength) {
		this.serialEnumLength = serialEnumLength;
	}

	public String getSerialEnumName() {
		return SerialEnumName;
	}

	public void setSerialEnumName(String serialEnumName) {
		SerialEnumName = serialEnumName;
	}

	public String getSerialEnumCode() {
		return SerialEnumCode;
	}

	public void setSerialEnumCode(String serialEnumCode) {
		SerialEnumCode = serialEnumCode;
	}

	public Long getStartEnumSn() {
		return startEnumSn;
	}

	public void setStartEnumSn(Long startEnumSn) {
		this.startEnumSn = startEnumSn;
	}
}

    

package com.test;

import com.meiju.SerialEnum;

public class SerialEnumTest {
	public static void main(String[] args) {
		System.out.println("索引code:" + SerialEnum.SERIAL_NUMBER.getSerialEnumCode());
		System.out.println("索引中文解释:" + SerialEnum.SERIAL_NUMBER.getSerialEnumName());
		System.out.println("索引开始值:" + SerialEnum.SERIAL_NUMBER.getStartEnumSn());
		System.out.println("索引长度:" + SerialEnum.SERIAL_NUMBER.getSerialEnumLength());
	}
}

    输出结果:

        索引code:SERIAL_NUMBER

        索引中文解释:流水号

        索引开始值:100000000000

        索引长度:12

 

99、总结

     

package com.test;

import com.meiju.ColorEnum;
import com.meiju.GenderEnum;
import com.meiju.OrderStateEnum;

public class Enumtest {
	public static void main(String[] args) {
		//枚举是一种类型,用于定义变量,以限制变量的赋值;赋值时通过“枚举名.值”取得枚举中的值
        ColorEnum colorEnum = ColorEnum.blue;
        switch (colorEnum) {
	        case red:
	            System.out.println("color is red");
	            break;
	        case green:
	            System.out.println("color is green");
	            break;
	        case yellow:
	            System.out.println("color is yellow");
	            break;
	        case blue:
	            System.out.println("color is blue");
	            break;
			default :
				break;
        }
        
        //遍历枚举
        System.out.println("遍历ColorEnum枚举中的值");
        for(ColorEnum color : ColorEnum.values()){
            System.out.println(color);
        }
        
        //获取枚举的个数
        System.out.println("ColorEnum枚举中的值有"+ColorEnum.values().length+"个");
        
        //获取枚举的索引位置,默认从0开始
        System.out.println(ColorEnum.red.ordinal());//0
        System.out.println(ColorEnum.green.ordinal());//1
        System.out.println(ColorEnum.yellow.ordinal());//2
        System.out.println(ColorEnum.blue.ordinal());//3
        
        //枚举默认实现了java.lang.Comparable接口
        System.out.println(ColorEnum.red.compareTo(ColorEnum.green));//-1
        
        System.err.println("颜色为" + ColorEnum.getSeason());
        
        System.out.println("===========");
        for(GenderEnum gender : GenderEnum.values()){
            System.out.println(gender.value);
        }
       
        System.out.println("===========");
        for(OrderStateEnum order : OrderStateEnum.values()){
            System.out.println(order.getName());
        }
	}
}

 

### C++ 枚举类型的使用方法 在 C++ 中,枚举类型是一种自定义数据类型,允许开发者通过一组命名整数值来表示特定范围内的常量。这种设计不仅提高了代码的可读性和维护性,还减少了硬编码带来的错误。 #### 定义枚举类型 枚举类型的定义格式如下: ```cpp enum 类型名 { 枚举常量表 }; ``` 其中 `类型名` 是枚举类型的名称,而 `枚举常量表` 列出了该类型的所有可能取值。如果未显式指定值,则默认从 0 开始依次递增[^2]。 #### 示例代码 下面是一个完整的例子,展示如何定义并使用枚举类型: ```cpp #include <iostream> using namespace std; // 定义颜色枚举类型 enum Color { RED, GREEN, BLUE }; int main() { // 声明一个 Color 类型的变量 Color myColor = RED; // 输出当前的颜色值 switch (myColor) { case RED: cout << "The color is Red." << endl; break; case GREEN: cout << "The color is Green." << endl; break; case BLUE: cout << "The color is Blue." << endl; break; default: cout << "Unknown color!" << endl; } return 0; } ``` 在这个例子中,我们定义了一个名为 `Color` 的枚举类型,并为其分配了三个常量:`RED`, `GREEN`, 和 `BLUE`。随后,在主函数中声明了一个 `Color` 类型的变量 `myColor` 并初始化为 `RED`。最后利用 `switch-case` 结构打印出对应的文字描述[^3]。 #### 遍历枚举类型 尽管标准 C 不支持直接遍历枚举类型,但如果枚举项是连续的,可以通过将其转换成整数来进行间接操作。例如: ```cpp #include <iostream> using namespace std; // 定义一周中的天数 enum Weekdays { MONDAY = 1, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }; int main() { // 遍历所有的周几 for (Weekdays day = MONDAY; day <= SUNDAY; ++day) { cout << static_cast<int>(day) << ' '; } cout << endl; return 0; } ``` 此程序展示了如何通过循环访问整个 `Weekdays` 枚举序列。注意这里使用了 `static_cast<int>()` 将枚举值转为整数以便于输出[^1]。 ### 总结 C++ 枚举类型提供了一种简洁的方式来管理有限集合作为逻辑单元。合理运用它可以显著提升软件质量以及开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值