
- 所属学科
- 计算机
- 外文名
- ENUM
- 类 属
- 数据类型
- 中文名
- 枚举
- 应用领域
- 计算机编程
-
enum
2020-03-22 12:57:39enum枚举的应用场景为类的对象有限个
- 星期: 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:49Enum概况 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:24ENUM概况 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 - }
-
Java enum常见的用法
2019-08-05 16:23:29public 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:45JDK1.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) 深入理解 -
getting this error from enum import Enum, IntEnum ImportError: cannot import name IntEnum
2020-12-04 12:43:37<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:15scoped enum是在enum关键字后面加上一个class,内容的默认类型是int, enum class Color { black, white, red }; 如果不想使用int,也可以像这样显示指定,enum class Status: std::uint32_t; C++98风格的枚举,... -
enum和Enum类的区别,enum结构使用
2021-01-30 12:35:17enum:从jdk1.5之后提供的一个关键字,用于定义枚举类; Enum:是一个抽象类,所有使用enum关键字定义的类默认继承了该类 -
enum 与 enum class
2016-11-17 21:58:00// unscoped enum: enum [identifier] [: type] {enum-list}; // scoped enum: enum [class|struct] [identifier] [: type] {enum-list}; 参数说明: identifier:指定给与枚举的类型名... -
enum 与enum class
2017-07-20 17:54:271) enum的功能需要一系列的#define来完成,enum 完成了一系列#define的打包收集,所以对于两个不一样的枚举体,即使枚举体的名字不同,里面的内容也不能重名。 enum Direction { TOP_LEFT, TOP_RIGHT }; enum ... -
java enum 查找
2016-08-31 18:26:38enum -
typedef enum用法_C++中typedef enum 和 enum
2020-12-01 01:14:09作者: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:25enum enum Color { RED=1, GREEN=2, BLUE=4 }; Color clr = GREEN;//只能拿枚举常量给枚举变量赋值,才不会出现类型的差异。 clr = 5; //错误 enum class enum class Color { RED=1, GREEN=2, ... -
enum和Enum关系
2016-05-16 09:19:261.例子:使用jad.exe将enum定义的枚举类型反编译成Enum的类类型 TestEnum.java public enum TestEnum { ONE(false), TWO(true); boolean mIsSelected; private TestEnum(boolean isSelected) { this.... -
typedef enum 和enum详细用法
2017-08-23 19:39:36枚举(enum)通过一种简单的途径,把一串名字与一串整形值联系在一起。可以代替#define声明 枚举一般形式: enum 可选标签{ 内容.....}可选定义变量定义; 其中“”内容.....”是一些标识符的列表,可能有... -
enum和typedef enum使用
2019-08-23 14:33:08enum 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++枚举类型enum与enum class
2020-08-18 22:31:23文章目录一.关于枚举类型二.枚举类型enum的使用三.枚举类型enum class的使用 ...在C++中,枚举类型分为不限定作用域(enum)和限定作用域(enum class)。 2. enum与enum class的区别? (为什么需要 -
python enum
2019-05-14 11:12:00Python 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:53enum类型 enum类型是一种特殊的类型,他的值包含在一个命名的常量集合中。这些常量称为枚举符。 枚举说明符: enum 标识符 opt { 枚举符表}; enum 标识符 枚举符表: 枚举符 枚举符表,枚举符 枚举符: ... -
typedef enum和enum的区别
2020-07-28 16:23:31首先看enum(枚举)的定义,定义一定要看很重要 枚举(一个被命名的整型常数的集合 )/集合(一个或多个确定元素所构成的整体) 举列子: enum DAY{ MON=1, TUE, WED, THU, FRI, SAT, SUN }; enum { MON=1, TUE,...