Enum枚举基础的用法

今天小G写一个常用的enum,有个朋友问下枚举的基础用法,我就写下来供大家使用

package com.company;

public enum Enum {
    OPEN("a","1"),
    OPEN1("b","2"),
    CLOSE("c","3");

    Enum(String key, String value) {
        this.key = key;
        this.value = value;
    }

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    private String key;
    private String value;

    public static Enum getvalue(String key) {
        if (null == key) {
            return null;
        }
        for (Enum e : Enum.values()) {
            if (key.equals(e.getKey())) {
                return e;
            }
        }
        return null;
    }
    public static Enum getkey(String value) {
        if (null == value) {
            return null;
        }
        for (Enum e : Enum.values()) {
            if (value.equals(e.getValue())) {
                return e;
            }
        }
        return null;
    }

    public static void main(String[] args) {
        //通过key查询出数据a的枚举
        Enum e= Enum.getkey("a");
        System.out.println("e:key"+e.getKey()+",value:"+e.getValue());
        //通过value
        Enum e1= Enum.getvalue("1");
        System.out.println("e:key"+e1.getKey()+",value:"+e1.getValue());
       //遍历枚举的值
        for(Enum date:Enum.values()){
            System.out.println("key:"+date.getKey());
            System.out.println("value:"+date.getValue());
        }

        //直接调用枚举的值信息
        String key=Enum.OPEN.key;
        String value=Enum.OPEN.value;
    }
}

<think>好的,我现在需要帮助用户了解C++中枚举类型enum的基本用法和示例。首先,我需要回忆C++中enum基础知识,包括传统的枚举和C++11引入的枚举类(enum class),因为用户提到的引用中提到了enum class,所以可能需要对比两者的区别。 首先,传统枚举enum)的作用是定义一组命名的常量,但它的作用域是全局的,容易导致命名冲突。比如,如果两个不同的枚举有同名的成员,就会冲突。而enum class解决了这个问题,因为它有作用域限制,必须通过枚举类型名访问成员。 接下来,我需要整理基本语法。传统枚举的声明方式是enum 枚举名 { 成员列表 };,而enum class则是enum class 枚举名 { 成员列表 };。需要举例说明两者的定义和用法差异。 然后,用户提供的引用中提到了使用枚举类作为参数类型的好处,比如明确函数意图和限制非法输入。这可能涉及到类型安全的问题,传统枚举可以隐式转换为整数,而enum class不能,这减少了错误。 另外,引用中的例子提到了别名枚举和底层类型的使用,比如用std::underlying_type_t获取底层类型,并允许位操作。这部分可能需要解释如何获取枚举的底层类型,以及如何组合枚举值,但要注意enum class默认不允许位操作,除非显式转换或重载运算符。 用户的问题集中在基础语法和示例,所以需要给出简单的代码示例。比如定义一个颜色枚举,然后使用它。同时,对比enumenum class的作用域问题。 还要注意用户的引用中提到了Python的变量和数据类型,但用户的问题是关于C++的,所以可能不需要涉及Python部分,但需要确保回答专注于C++的enum。 可能需要分步骤讲解:定义枚举、变量声明、作用域、类型转换、示例代码。同时,生成相关问题时要考虑用户可能的后续疑问,比如与C语言枚举的区别、enum class的优势、如何遍历枚举值等。 最后,确保使用正确的中文表达,行内公式用$...$,独立公式用$$...$$,但在这个问题中可能用不上数学公式,但如果有涉及计算的例子需要注意格式。同时检查LaTeX语法是否正确,比如枚举的成员列表中的符号是否正确转义。 现在需要组织这些信息,确保结构清晰,符合用户的要求,并生成相关问题。</think>### C++枚举类型(enum)基础语法及示例 #### 1. 传统枚举(C风格) **语法定义** ```cpp enum 枚举名 { 成员1, 成员2, 成员3... }; ``` **特点** - 成员作用域为全局,可能导致命名冲突 - 可隐式转换为整数类型(如`int`) **示例** ```cpp enum Color { Red, Green, Blue }; // 默认从0开始赋值 Color c = Red; // 直接访问 int value = c; // 隐式转换为int(value=0) ``` #### 2. 强类型枚举(C++11引入的`enum class`) **语法定义** ```cpp enum class 枚举名 { 成员1, 成员2, 成员3... }; ``` **特点** - 成员需通过枚举名访问(作用域限定) - 不可隐式转换为整数,类型更安全[^1] **示例** ```cpp enum class FileAccess { Read, Write, Execute }; FileAccess access = FileAccess::Read; // 必须带作用域 // int flag = access; // 错误!禁止隐式转换 ``` #### 3. 显式指定底层类型 可指定枚举的存储类型(如`int`、`char`)以优化内存或兼容协议: ```cpp enum class Status : uint8_t { Ok=0, Error=1, Loading=2 }; ``` #### 4. 综合应用示例 ```cpp #include <iostream> // 传统枚举 enum Direction { North, South, East, West }; // 强类型枚举 enum class TrafficLight { Red, Yellow, Green }; int main() { Direction dir = South; // 直接访问 TrafficLight light = TrafficLight::Red; // 作用域限定 std::cout << "South对应整数值: " << dir << std::endl; // 输出1 // std::cout << light; // 错误!不能直接输出 return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值