enum 订阅
enum是计算机编程语言中的一种数据类型。枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。 展开全文
enum是计算机编程语言中的一种数据类型。枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。
信息
所属学科
计算机
外文名
ENUM
类    属
数据类型
中文名
枚举
应用领域
计算机编程
ENUM定义说明
1. 枚举类型定义的一般形式为:enum 枚举名{ 枚举值表 };在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。例如:该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型变量的取值只能是七天中的某一天。2. 枚举变量的说明如同结构体(struct)和共用体(union)一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明。设有变量a,b,c被说明为上述的weekday,可采用下述任一种方式:
收起全文
精华内容
下载资源
问答
  • enum

    千次阅读 2020-03-22 12:57:39
    enum

    https://yuanyu.blog.csdn.net/article/details/105015326 


    枚举的应用场景为类的对象有限个

    • 星期: Monday(星期一) ... Sunday(星期天)
    • 性别: Man(男)、Woman(女)
    • 季节: Spring(春节) ... Winter(冬天)
    • 支付方式: Cash(现金)、WeChatPay(微信)、Alipay(支付宝)、BankCard(银行卡)、CreditCard(信用卡)
    • 就职状态: Busy、Free、Vocation、Dimission
    • 订单状态: Nonpayment(未付款)、Paid(已付款)、Delivered(已发货)、Return(退货)、Checked(已确认)、Fulfilled(已配货)
    • 线程状态:创建、就绪、运行、阻塞、死亡

    jdk5.0之前需要自定义枚举类 

    • java.util.logging.Level
    /**
     * 自定义枚举类
     */
    public class Season{
        //1.声明Season对象的属性(private final修饰)
        private final String name;
        private final String desc;
        //2.私有化类的构造器,并给对象属性赋值
        private Season(String seasonName,String seasonDesc){
            this.name = seasonName;
            this.desc = seasonDesc;
        }
        //3.提供当前枚举类的多个对象(public static final的)
        public static final Season SPRING = new Season("春天","春暖花开");
        public static final Season SUMMER = new Season("夏天","夏日炎炎");
        public static final Season AUTUMN = new Season("秋天","秋高气爽");
        public static final Season WINTER = new Season("冬天","冰天雪地");
        //4. 获取枚举类对象的属性
        public String getName(){return name;}
        public String getDesc(){return desc;}
        //4. 提供toString()
        @Override
        public String toString() {
            return "Season{"+"seasonName='"+name+'\''+", seasonDesc='"+desc+'\''+'}';
        }
    }
    @Test
    public void testSeason(){
        Season spring = Season.SPRING;
        System.out.println(spring.getName());
    }

    jdk5.0后可以使用enum关键字定义枚举类

    Enum类的主要方法

    方法名

    详细描述
    equals

    在枚举类型中可以直接使用 “==” 来比较两个枚举常量是否相等;Enum提供的这个equals()方法,也是直接使用 “==” 实现的。它的存在是为了在Set、List和Map中使用;注意equals()是不可变的;

    hashCode

    Enum实现了hashCode()来和equals()保持一致;它也是不可变的;

    getDeclaringClass

    得到枚举常量所属枚举类型的Class对象;可以用它来判断两个枚举常量是否属于同一个枚举类型;

    name

    得到当前枚举常量的名称;建议优先使用toString();

    ordinal

    得到当前枚举常量的次序;

    compareTo

    枚举类型实现了Comparable接口,这样可以比较两个枚举常量的大小(按照声明的顺序排列);

    clone

    枚举类型不能被Clone;为了防止子类实现克隆方法,Enum实现了个仅抛出CloneNotSupportedException异常的不变Clone();

    values() 返回枚举类型的对象数组;该方法可以很方便地遍历所有的枚举值;
     
    valueOf(String str)
     
    可以把一个字符串转为对应的枚举类对象;要求字符串必须是枚举类对象的 “名字” ;如不是会有运行时异常IllegalArgumentException;
    toString()

    得到当前枚举常量的名称;你可以通过重写这个方法来使得到的结果更易读;

     

    定义的枚举类默认继承于java.lang.Enum类 

    public enum Season{
        //1.提供当前枚举类的对象,多个对象之间用","隔开,末尾对象";"结束
        SPRING("春天", "春暖花开") ,
        SUMMER("夏天", "夏日炎炎") ,
        AUTUMN("秋天", "秋高气爽"),
        WINTER("冬天", "冰天雪地");
        //2.声明Season对象的属性(private final修饰)
        private final String name;
        private final String desc;
        //2.私有化类的构造器,并给对象属性赋值 (默认private)
        Season(String seasonName, String seasonDesc) {
            this.name = seasonName;
            this.desc = seasonDesc;
        }
        //4.获取枚举类对象的属性
        public String getName(){return name;}
        public String getDesc(){return desc;}
        //@Override
        //public String toString() {
        //    return "Season{"+"name='"+name+'\''+", desc='"+desc+'\''+'}';
        //}
    }
    @Test
    public void testToString() {
        Season summer = Season.SUMMER;
        //toString():返回枚举类对象的名称
        System.out.println(summer.toString());//SUMMER
        System.out.println(Season.class.getSuperclass());//class java.lang.Enum
    }
    @Test
    public void testValues() {
        //values():返回所有的枚举类对象构成的数组
        Season[] seasons = Season.values();
        Stream.of(seasons).forEach(System.out::println);
        System.out.println("****************");
        Thread.State[] states = Thread.State.values();
        Stream.of(states).forEach(System.out::println);
    }
    @Test
    public void testValueOf() {
        //valueOf(String objName):返回枚举类中对象名是objName的对象
        Season winter = Season.valueOf("WINTER"); //winter 不可
        System.out.println(winter);
        //如果没有objName的枚举类对象,则抛异常:IllegalArgumentException
        Season spring = Season.valueOf("NULL");
    }

     

    public interface Info{
        void show();
    }
    public enum Season implements Info {
        SPRING("春天", "春暖花开") {
            @Override
            public void show() {
                System.out.println("春天在哪里?");
            }
        },
        SUMMER("夏天", "夏日炎炎") {
            @Override
            public void show() {
                System.out.println("宁夏");
            }
        },
        AUTUMN("秋天", "秋高气爽") {
            @Override
            public void show() {
                System.out.println("秋天不回来");
            }
        },
        WINTER("冬天", "冰天雪地") {
            @Override
            public void show() {
                System.out.println("大约在冬季");
            }
        };
        private final String name;
        private final String desc;
        Season(String seasonName, String seasonDesc) {
            this.name = seasonName;
            this.desc = seasonDesc;
        }
        public String getName(){return name;}
        public String getDesc(){return desc;}
        //没有重写就是使用的这个
        //@Override
        //public void show() {
        //    System.out.println("这是一个季节");
        //}
    }
    java.util.concurrent.TimeUnit
    java.lang.Thread.State

     

    展开全文
  • Enum

    千次阅读 2017-03-18 16:48:49
    Enum概况 enum枚举类型是C/C++中的一种数据类型,与struct和class一样是用户自定义的类型,其特点在于enum类型的变量取值是有限的,是可以一一列举出来的。Enum定义 C++ enum枚举格式:enum 枚举类型名> {枚举表>};...

    Enum概况
    enum枚举类型是C/C++中的一种数据类型,与struct和class一样是用户自定义的类型,其特点在于enum类型的变量取值是有限的,是可以一一列举出来的。

    Enum定义
    C++ enum枚举格式:

    enum < 枚举类型名> {< 枚举表>};
    enum {< 枚举表>}< 变量名表>;

    第一个C++ enum枚举值对应着一个整型数,通常情况下如果其中的枚举常量没有定义数值,那么第一个枚举值对应着常量值0,然后依次递增,如果第一个枚举常量定义了数值,那么其后的值将随之递增,其中每个常量之间用“,”隔开,而不是“;”,最后一个数值不用符号。
    enum bool {false,true}; bool类型就是C++预定义的枚举

    Enum举例

    #include < iostream.h> 
    
    void main()  
    ...{  
    //例1  
    enum day...{Sun,Mon,Tue,Wed,Thu,Fri,Sat};//定义一个day的枚举  
    day d = Sun; 
    //d只能等于"Sun,Mon,Tue,Wed,Thu,Fri,Sat"中的一个,没有其它值!  
    cout< < "value is "< < d< < endl;  
    
    //也可以定义多个变量  
    enum day...{Sun,Mon,Tue,Wed,Thu,Fri,Sat};  
    day d1,d2,d3;  
    d1 = Thu; d2 = Sat; d3 = Tue;  
    cout< < "d1 && d2 && d3 "< < d1< < " "< < d2< < " "< < d3< < endl;  
    
    //例2  
    enum ...{Sun,Mon,Tue,Wed,Thu,Fri,Sat} d;  
    d = Mon;  
    cout< < "value is "< < d< < endl;  
    
    //例3  
    enum ...{Sun=10,Mon,Tue,Wed,Thu,Fri,Sat} d1,d2,d3,d4;  
    d1 = Sun; d2 = Mon; d3 = Tue; d4 = Wed;  
    cout< < d1< < " "< < d2< < " "< < d3< < " "< < d4< < endl; 
    //输出 10 11 12 13  
    
    //例4  
    enum ...{Sun=10,Mon=1,Tue,Wed,Thu,Fri,Sat} d1,d2,d3,d4;  
    d1 = Sun; d2 = Mon; d3 = Tue; d4 = Wed;  
    cout< < d1< < " "< < d2< < " "< < d3< < " "< < d4< < endl; 
    //输出 10 1 2 3  
    }  
    展开全文
  • ENUM

    2013-08-21 15:32:24
    ENUM概况 enum枚举类型是C/C++中的一种数据类型,与struct和class一样是用户自定义的类型,其特点在于enum类型的变量取值是有限的,是可以一一列举出来的。   ENUM定义 C++ enum枚举格式: enum {}; ...

    ENUM概况

    enum枚举类型是C/C++中的一种数据类型,与struct和class一样是用户自定义的类型,其特点在于enum类型的变量取值是有限的,是可以一一列举出来的。

     

    ENUM定义

    C++ enum枚举格式:

    enum < 枚举类型名> {< 枚举表>};

    enum {< 枚举表>}< 变量名表>;

     

    第一个C++ enum枚举值对应着一个整型数,通常情况下如果其中的枚举常量没有定义数值,那么第一个枚举值对应着常量值0,然后依次递增,如果第一个枚举常量定义了数值,那么其后的值将随之递增,其中每个常量之间用“,”隔开,而不是“;”,最后一个数值不用符号。

    enum bool {false,true};  bool类型就是C++预定义的枚举

     

    ENUM举例

     

    1. #include < iostream.h> 
    2.  
    3. void main()  
    4. ...{  
    5. //例1  
    6. enum day...{Sun,Mon,Tue,Wed,Thu,Fri,Sat};//定义一个day的枚举  
    7. day d = Sun
      //d只能等于"Sun,Mon,Tue,Wed,Thu,Fri,Sat"中的一个,没有其它值!  
    8. cout< < "value is "< < d< < endl;  
    9.  
    10. //也可以定义多个变量  
    11. enum day...{Sun,Mon,Tue,Wed,Thu,Fri,Sat};  
    12. day d1,d2,d3;  
    13. d1 = Thud2 = Satd3 = Tue;  
    14. cout< < "d1 && d2 && d3 "< < d1< < " "< < d2< < " "< < d3< < endl;  
    15.  
    16. //例2  
    17. enum ...{Sun,Mon,Tue,Wed,Thu,Fri,Sat} d;  
    18. d = Mon;  
    19. cout< < "value is "< < d< < endl;  
    20.  
    21. //例3  
    22. enum ...{Sun=10,Mon,Tue,Wed,Thu,Fri,Sat} d1,d2,d3,d4;  
    23. d1 = Sund2 = Mond3 = Tued4 = Wed;  
    24. cout< < d1< < " "< < d2< < " "< < d3< < " "< < d4< < endl
      //输出 10 11 12 13  
    25.  
    26. //例4  
    27. enum ...{Sun=10,Mon=1,Tue,Wed,Thu,Fri,Sat} d1,d2,d3,d4;  
    28. d1 = Sund2 = Mond3 = Tued4 = Wed;  
    29. cout< < d1< < " "< < d2< < " "< < d3< < " "< < d4< < endl
      //输出 10 1 2 3  
    30. }  
    展开全文
  • Java enum常见的用法

    万次阅读 多人点赞 2019-08-05 16:23:29
    public enum WeekDay { SUN, MON, TUE, WED, THT, FRI, SAT } 二,swich public enum WeekDay { SUN, MON, TUE, WED, THT, FRI, SAT } public class SelectDay{ WeekDay weekday = WeekDay.S...

    一,常量定义

    public enum WeekDay {
        SUN, MON, TUE, WED, THT, FRI, SAT
    }

    二,swich

    public enum WeekDay {
        SUN, MON, TUE, WED, THT, FRI, SAT
    }
    
    public class SelectDay{
        WeekDay weekday = WeekDay.SUN;
        public void select(){
            switch(weekday){
                case SUN:
                    weekday = WeekDay.SUN;
                    break;
                ...
            }
        }
    }

    三,向枚举添加新方法

    public enum Color {  
        RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);  
        // 成员变量  
        private String name;  
        private int index;  
        // 构造方法  
        private Color(String name, int index) {  
            this.name = name;  
            this.index = index;  
        }  
        // 普通方法  
        public static String getName(int index) {  
            for (Color c : Color.values()) {  
                if (c.getIndex() == index) {  
                    return c.name;  
                }  
            }  
            return null;  
        }  
        // get set 方法  
        public String getName() {  
            return name;  
        }  
        public void setName(String name) {  
            this.name = name;  
        }  
        public int getIndex() {  
            return index;  
        }  
        public void setIndex(int index) {  
            this.index = index;  
        }  
    }  

    四,覆盖枚举方法

    public enum Color { 
        RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); 
        // 成员变量
        private String name; private int index; 
        // 构造方法 
        private Color(String name, int index) { 
            this.name = name; this.index = index; 
        } 
        //覆盖方法 
        @Override 
        public String toString() { 
        return this.index+"_"+this.name; 
        } 
    }

    五,实现接口

    public interface Behaviour { 
        void print(); 
        String getInfo(); 
    } 
    public enum Color implements Behaviour{ 
        RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); 
        // 成员变量 
        private String name; 
        private int index; 
        // 构造方法 
        private Color(String name, int index) { 
            this.name = name; this.index = index; 
        } 
        //接口方法 
        @Override 
        public String getInfo() { 
            return this.name; 
        } 
        //接口方法 
        @Override 
        public void print() { 
            System.out.println(this.index+":"+this.name); 
        } 
    }

    六,接口组织枚举

    public interface Food { 
        enum Coffee implements Food{ 
            BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO 
        } 
        enum Dessert implements Food{ 
            FRUIT, CAKE, GELATO 
        } 
    }

    七,枚举集合

    public class Test {
        public static void main(String[] args) {
            EnumSet<WeekDay> week = EnumSet.noneOf(WeekDay.class);
            week.add(WeekDay.MON);
            System.out.println("EnumSet中的元素:" + week);
            week.remove(WeekDay.MON);
            System.out.println("EnumSet中的元素:" + week);
            week.addAll(EnumSet.complementOf(week));
            System.out.println("EnumSet中的元素:" + week);
            week.removeAll(EnumSet.range(WeekDay.FRI, WeekDay.SAT));
            System.out.println("EnumSet中的元素:" + week);
        }

     

    展开全文
  • Java 枚举(enum) 详解7种常见的用法

    万次阅读 多人点赞 2016-08-11 11:14:45
    JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。  Java代码  enum Signal {   GREEN, YELLOW, RED  }  public class TrafficLight {   Signal color...
  • 深入理解Java枚举类型(enum)

    万次阅读 多人点赞 2017-05-13 18:27:14
    【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) ... 出自【zejian的博客】 关联文章: 深入理解Java类型信息...深入理解Java枚举类型(enum) 深入理解Java注解类型(@Annotation) 深入理解
  • <div><pre><code>from enum import Enum, IntEnum </code></pre> <p>ImportError: cannot import name IntEnum</p><p>该提问来源于开源项目:python-hyper/hyper-h2</p></div>
  • scoped enum和unscoped enum

    2020-04-22 08:58:15
    scoped enum是在enum关键字后面加上一个class,内容的默认类型是int, enum class Color { black, white, red }; 如果不想使用int,也可以像这样显示指定,enum class Status: std::uint32_t;  C++98风格的枚举,...
  • enum:从jdk1.5之后提供的一个关键字,用于定义枚举类; Enum:是一个抽象类,所有使用enum关键字定义的类默认继承了该类
  • enumenum class

    2016-11-17 21:58:00
    // unscoped enum: enum [identifier] [: type] {enum-list}; // scoped enum: enum [class|struct] [identifier] [: type] {enum-list}; 参数说明:  identifier:指定给与枚举的类型名...
  • enumenum class

    千次阅读 2017-07-20 17:54:27
    1) enum的功能需要一系列的#define来完成,enum 完成了一系列#define的打包收集,所以对于两个不一样的枚举体,即使枚举体的名字不同,里面的内容也不能重名。 enum Direction { TOP_LEFT, TOP_RIGHT }; enum ...
  • java enum 查找

    千次阅读 2016-08-31 18:26:38
    enum
  • 作者:zhouleyuan链接:https://www.cnblogs.com/zhouleyuan/p/10751598.html在C++中,这...typedef enum多用在C语言中。在C语言中,如果使用typedef enum定义一个枚举类型,比如:typedefenumTokenType{blah1=0x000...
  • enum class和enum的区别

    千次阅读 2020-05-15 19:42:25
    enum enum Color { RED=1, GREEN=2, BLUE=4 }; Color clr = GREEN;//只能拿枚举常量给枚举变量赋值,才不会出现类型的差异。 clr = 5; //错误 enum class enum class Color { RED=1, GREEN=2, ...
  • enumEnum关系

    2016-05-16 09:19:26
    1.例子:使用jad.exe将enum定义的枚举类型反编译成Enum的类类型 TestEnum.java public enum TestEnum { ONE(false), TWO(true); boolean mIsSelected; private TestEnum(boolean isSelected) { this....
  • typedef enumenum详细用法

    万次阅读 多人点赞 2017-08-23 19:39:36
    枚举(enum)通过一种简单的途径,把一串名字与一串整形值联系在一起。可以代替#define声明  枚举一般形式:  enum 可选标签{ 内容.....}可选定义变量定义;  其中“”内容.....”是一些标识符的列表,可能有...
  • enum和typedef enum使用

    2019-08-23 14:33:08
    enum MyType{ Type1, Type2, Type3 }; //使用 MyType type1 = Type1; MyType type2 = MyType::Type2; 2. 情况二 //定义 enum{ Type1, Type2, Type3 }type; //使用 type = Type1...
  • LuaEnum

    2019-07-01 09:55:29
    ---@class Enum Enum = {} ---@param enum table ---@param enumVal number function Enum.ToString(enum, enumVal) for k, v in pairs(enum) do if v == enumVal then return tostring(k...
  • C++枚举类型enumenum class

    千次阅读 2020-08-18 22:31:23
    文章目录一.关于枚举类型二.枚举类型enum的使用三.枚举类型enum class的使用 ...在C++中,枚举类型分为不限定作用域(enum)和限定作用域(enum class)。 2. enumenum class的区别? (为什么需要
  • python enum

    2019-05-14 11:12:00
    Python enum:枚举1.枚举定义2.枚举取值 版本:python3.6.4 1.枚举定义 #枚举的定义 from enum import Enum Month = Enum("Month",('Jan', 'Feb', 'Mar')) from enum import Enum,unique @unique class Weekday...
  • enum类型

    2019-09-05 09:58:53
    enum类型 enum类型是一种特殊的类型,他的值包含在一个命名的常量集合中。这些常量称为枚举符。 枚举说明符: enum 标识符 opt { 枚举符表}; enum 标识符 枚举符表: 枚举符 枚举符表,枚举符 枚举符: ...
  • typedef enumenum的区别

    2020-07-28 16:23:31
    首先看enum(枚举)的定义,定义一定要看很重要 枚举(一个被命名的整型常数的集合 )/集合(一个或多个确定元素所构成的整体) 举列子: enum DAY{ MON=1, TUE, WED, THU, FRI, SAT, SUN }; enum { MON=1, TUE,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 75,280
精华内容 30,112
关键字:

enum