枚举类型

枚举类型enum——systemverilog enum的基础语法 enum提供方法来描述抽象变量的合法值范围,其每个值都需要提供一个用户自定义的名字 enum{red,green.blue} RGB; // RGB是一个枚举类型变量 // red,green.blue是枚举常量 枚举数据默认(缺省类型)的存储类型为int型(32位有符号二值逻辑),且数值从0开始递增 。 枚举类型也可以直接赋初值 enum logic [2:0] {WAITE = 3'b001,LOAD = 3'b010,READY = 3'b100} state_t; 枚举类 阅读详情
枚举类型
  Enum 作为Sun全新引进的一个关键字,看起来很象是特殊的class,  它也可以有自己的变量,
可以定义自己的方法,可以实现一个或者多个接口。  
 
  当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征。  
1. 它不能有public的构造函数 ,这样做可以保证客户代码没有办法新建一个enum的实例。  
2. 所有枚举值都是public,static ,final的 。注意这一点只是针对于枚举值,我们可以和在普通类里面定义 变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。   
3 . Enum默认实现了java.lang.Comparable接口。  
4. Enum覆载了toString方法 ,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”.  
5. Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。
 调用valueOf(“Blue”)将返回 Color.Blue.因此我们在自己重写toString方法的时候就要注意到这一点,
 一把来说应该相对应地重写valueOf方法。  
6. Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值 。  
7. Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。  
注意 1:至于Enum的枚举常量的位置(序数)可以用Enum的ordinal()方法得到。

 了解了这些基本特性,我们来看看如何使用它们。  

1. 遍历所有有枚举值 .   知道了有values方法,我们可以轻车熟路地用ForEach循环来遍历了枚举值了。  
  for   (Color   c:   Color.values())  
  System.out.println(“find   value:”   +   c);  
2. 在enum中定义方法和变量 ,比如我们可以为Color增加一个方法随机返回一个颜色。  
   public    enum      Color    {  
  Red,  
  Green,  
  Blue;  
  /*  
  *定义一个变量表示枚举值的数目。  
  *(我有点奇怪为什么sun没有给enum直接提供一个size方法).  
  */  

   private   static   int    number   =   Color.values().length   ;  
  /**  
  *   随机返回一个枚举值  
  @return   a   random   enum   value.  
  */  

   public   static    Color    getRandomColor (){  
   long    random   =   System.currentTimeMillis()   %   number;  
   switch    ((int)   random){  
    case    0:  
     return    Color.Red;  
    case    1:  
     return    Color.Green;  
    case    2:  
     return    Color.Blue;  
    default    :    return    Color.Red;  
  }  
  }  
  }  
  可以看出这在枚举类型里定义变量和方法和在普通类里面定义方法和变量没有什么区别。
  唯一要注意的只是变量和方法定义必须放在所有枚举值定义的后面,否则编译器会给出一个错误。  
3. 覆载(Override)toString,   valueOf方法   
  前面我们已经知道enum提供了toString,valueOf等方法,很多时候我们都需要覆载默认的toString方法,那么对于enum我们怎么做呢。
  其实这和覆载一个普通class的toString方法没有什么区别。  
  ….  
   public    String    toString (){  
  
switch    (this){  
  case   Red:  
   return   "Color.Red ";  
  case   Green:  
   return   "Color.Green ";  
  case   Blue:  
   return   "Color.Blue ";  
  default:  
   return   "Unknow   Color ";  
  }  
  }  

  ….  
  这时我们可以看到,此时再用前面的遍历代码打印出来的是  
  Color.Red  
  Color.Green  
  Color.Blue  

  而不是  
  Red  
  Green  
  Blue.
  
  可以看到toString确实是被覆载了。一般来说在覆载toString的时候我们同时也应该覆载valueOf方法,以保持它们相互的一致性。  
4. 使用构造函数  
   虽然enum不可以有public的构造函数,但是我们还是可以定义private的构造函数,
  在enum内部使用。还是用Color这个例子。  
   public     enum     Color    {  
  Red( "This   is   Red "),  
  Green( "This   is   Green "),  
  Blue( "This   is   Blue ");  
  
private    String   desc;  
  
Color (String   desc){  
  
this.desc   =   desc;  
  }  
   public   String    getDesc(){  
   return    this.desc;  
  }  
  }  
  这里我们为每一个颜色提供了一个说明信息,   然后定义了一个构造函数接受这个说明信息。  
  要注意这里构造函数不能为public或者protected,从而保证构造函数只能在内部使用,客户代码不能new一个枚举值的实例出来。
  这也是完全符合情理的,因为我们知道枚举值是public   static   final的常量而已。  
5. 实现特定的接口   
  我们已经知道enum可以定义变量和方法,它要实现一个接口也和普通class实现一个接口一样,这里就不作示例了。  
6. 定义枚举值自己的方法。   
  前面我们看到可以为enum定义一些方法,其实我们甚至可以为每一个枚举值定义方法。
这样,我们前面覆载toString的例子可以被改写成这样。  
   public     enum     Color    {  
  Red   {  
 
 public    String   toString(){  
   
return    "Color.Red ";  
  }  
  },  
  Green   {  
  
public    String   toString(){  
   
return    "Color.Green ";  
  }  
  },  
  Blue{  
  
public    String   toString(){  
  
 return    "Color.Blue ";  
  }  
  };  
  }  

  从逻辑上来说这样比原先提供一个“全局“的toString方法要清晰一些。  
  总的来说,enum作为一个全新定义的类型,是希望能够帮助程序员写出的代码更加简单易懂,
  个人觉得一般也不需要过多的使用enum的一些高级特性,否则就和简单易懂的初衷想违背了。 
实例1 :
  public class  Test  {
 
  /**
   * @param args
   */

   public static void  main(String[] args) {
   Student name=Student.ROBIN;
   System.out.println("name:"+name);
    for (Student st:Student.values())
    System.out.println(st.name);
  }
 }
  enum     Student
 {
  ROBIN("robin"),
  HARRY("harry",40),
  ROBBIE("robbie");

   String  name;
   int  age;
   private  Student(String name)
  {
    this (name,0);
  }
   private  Student(String name,int age)
  {
   this.name=name;
   this.age=age;

  }

 }

转自:http://blog.youkuaiyun.com/hudashi/article/details/6936978

JDK 1.5新特性---枚举类型   Enum是Sun全新引进的一个关键字,看起来很象是特殊的class,它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。在声明一个enum类型时,应该注意到enum类型有如下的一些特征: 立即下载

相关推荐

别再一个个BAPI调了!用CVI_EI_INBOUND_MAIN一次性搞定SAP BP主数据(附完整ABAP代码)

本文详细介绍了如何使用SAP标准函数CVI_EI_INBOUND_MAIN高效维护业务伙伴(BP)主数据,替代传统的多BAPI调用方式。通过完整ABAP代码示例,展示了如何一站式处理供应商、客户、公司代码等所有视图的创建与更新,提升数据一致性和开发效率。

weixin_29204205的博客 291

enum ordinal_Java Enum ordinal()方法与示例

enum ordinal 枚举类ordinal()方法 (Enum Class ordinal() method) ordinal() method is available in java.lang package. ordinal()方法在java.lang包中可用。 ordinal() method is used to return the position of this enum co...

cumubi7552的博客 4415

Redis中什么是Big Key(大key)问题?如何解决Big Key问题?

通俗易懂的讲,Big Key就是某个key对应的value很大,占用的redis空间很大,本质上是大value问题。key往往是程序可以自行设置的,value往往不受程序控制,因此可能导致value很大。redis中这些Big Key对应的value值很大,在序列化/反序列化过程中花费的时间很大,因此当我们操作Big Key时,通常比较耗时,这就可能导致redis发生阻塞,从而降低redis性能。用几个实际的例子对大Key的特征进行描述:● 一个String类型的Key,它的值为5MB(数据过大); ● 一

weixiaohuai的博客 3万+

Java枚举类型 enum

定义 An enum type is a special data type that enables for a variable to be a set of predefined constants. The variable must be equal to one of the values that have been predefined for it. 枚举类型是一...

MengW9的博客 563

三极管和MOS管工作原理详解

PN结的形成 PN结是三极管以及场效应管中最基本的组成部分,要想彻底搞明白三极管以及场效应管的工作原理,必须先搞清楚PN结形成的原理和工作特性。 本征半导体以及空穴对 本征半导体(intrinsic semiconductor))完全不含杂质且无晶格缺陷的纯净半导体称为本征半导体。主要常见代表有硅、锗这两种元素的单晶体结构。硅、锗都是4价原子,在半导体内部形成相对稳定的共价键结构,如图 1所

技术交流是便宜的的博客 10万+

BrainVision Recorder 和 BrainVision Analyzer 2.2 安装

本篇为《EEG处理》系列博客的第二篇,该系列博客主要记录EEG信号处理的学习过程中的软件安装和学习过程,方便以后查阅。本篇为BrainVision Recorder 和 BrainVision Analyzer 2.2 的安装过程。 BrainVision Recorder 和 BrainVision Analyzer 2.2 安装安装前奏Brain Vision Analyzer分析软件 安装Brain Vision Recorder记录软件 安装推荐几款个人使用的科研软件 安装前奏 Brain V

梁小憨憨的博客 5062

C语言详解 - 枚举类型

注:以下全部代码的执行环境为VC++ 6.0 在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作,您的代码可能是: #define MON  1 #define TUE   2 #define WED  3 #define THU   4 #define FRI    5 #define SAT   6 #define SUN   7  ...

weixin_34320159的博客 4249

ReAct框架到多智能体协作:OpenClaw任务分解机制的演进与突破

AI的最终价值是落地,是帮用户解决实际问题,而不是停留在聊天界面里。从ReAct框架到多智能体协作,OpenClaw的任务分解体系走了一条非常务实的路线:所有的优化都是为了解决真实场景里的痛点,所有的设计都是为了让用户用起来更省心。很多人说现在的AI还是“人工智障”,那是因为他们没有用到真正能落地的AI产品。当你用过OpenClaw,体验过你说一句话它就能把一整套复杂任务全都做完的感觉,你就会明白:AI代替人做重复性工作的时代,已经真的来了。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 311

数据类型——枚举

枚举是什么 在c#中,枚举(enumeration)是一种数据类型,和int、double、string等类型相似。枚举用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。例如一周有周一、周二……周日,则可定义一个枚举类型包括周一……周日七个取值。 枚举的声明 c#中枚举的声明关键字为enum [public] enum 枚举名 { 值1, 值2, 值3, …… } public:访问修饰符,公共的。可省略 enum:关键字,生命枚举类型 枚举名:符合Pascal明明规

yangke 6600

Android 14.0 开机广播接收慢广播延迟问题分析

在14.0的系统rom定制化开发中,在某些时候在接收开机广播的时候发现,过了一分钟才收到开机广播,接下来就需要分析下 开机广播的相关分发机制,来处理下相关问题

安卓兼职framework和app工程师的博客 631

【华为OD机试真题】6、数组去重和排序 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

题目描述 >给定一个乱序的数组,删除所有的重复元素,使得每个元素只出现一次,并且按照出现的次数从高到低进行排序,相同出现次数按照第一次出现顺序进行先后排序

KJ.JK 3888

枚举类型是什么

C语言详解 - 枚举类型注:以下全部代码的执行环境为VC++ 6.0在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作,您的代码可能是:#define MON  1#define TUE   2#define WED  3#define THU   4#define FRI    5#define SAT   6#define SUN   7 在此,我们定...

4559的博客 3万+

42页Claude 3技术报告解读(Opus, Sonnet, Haiku)

在Claude 3模型中,增加了一个额外的原则到Claude的宪法中,以鼓励尊重残疾人权利,这一原则源自对集体宪法AI的研究。Claude 3模型的训练基于专有的混合数据集,包括截至2023年8月互联网上公开可用的信息,以及第三方提供的非公开数据、数据标注服务和付费承包商提供的数据,还有内部生成的数据。这些初始响应通常包含有害和有毒的内容。Claude 3模型家族在推理、编码和问答任务上展现出卓越的性能,特别是在行业标准基准测试中取得了显著的提升,证明了其在处理复杂问题和提供准确答案方面的能力。

具身机器人和通用AI 2433

【Java】枚举类型

枚举类型是一种特殊的数据类型,用于定义一组固定的命名常量。枚举类型提供了一种更强大、更安全和更易读的方式来表示一组相关的常量。在Java中,枚举类型是通过使用enum关键字来定义的。枚举类型可以包含一个或多个枚举常量,每个常量都是枚举类型的实例。枚举常量是在枚举类型中预先定义的,它们是唯一的、已命名的对象。

qq_61635026的博客 2万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C++ 之枚举类型

在 C++ 中,如果一个变量的可能取值为有限个时,你可以使用枚举类型对该变量进行声明。枚举类型是枚举常量的集合,枚举常量即是使用该枚举类型声明的枚举变量所能取得的值。枚举类型并不能为你提供太多的帮助,但能有效地提高程序的可读性及可靠性(安全性)。

两个月亮 4406

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

C++枚举类型

只要enum有名字,我们就能定义并初始化该类型的成员。要想初始化enum对象或者为enum对象赋值,必须使用该类型的一个枚举成员或者该类型的另一个对象,//正确一个不限定作用城的枚举类型的对象或枚举成员自动地转换成整型,限定作用域的枚举类型不会进行隐式转换int a1 = a;//可以//不可以,限定作用域的枚举类型不会进行隐式转换。

2301_80224556的博客 2710

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

枚举类型enum用法

枚举常量是枚举类型中的值,即枚举值。 枚举类型是一种用户定义的类型,只有用户在程序中定义它后才能被使用。用户通常利用枚举类型定义程序中需要使用的一组相关的符号常量。枚举类型的定义格式为: enum <枚举类型名> {<枚举表>}; 它是一条枚举类型定义语句,该语句以enum保留字开始,接着为枚举类型名,它是用户命名的一个标识符,以后就直接使用它表示该类型,枚举类型名后为该类型的定义体,它是由一对花括号和其中的枚举表所组成,枚举表为一组用逗号分开的由用户命名的符号常量,每个

mindboycsdn的博客 5559

【SV】枚举类型

1.1. 用户自定义类型(typedef) 局部typedef定义:只用于设计的特定部分时,typedef的定义可在module或interface中 共享typedef定义:当在多个模型中使用时,typedef的定义可在包中进行,module,interface,program block可以通过导入packet子项来使用typedef定义 例如: package chip_types; `ifdef TWO_STATE typedef bit dtype_t; //当宏定义TWO_STATE时

lbt_dvshare的博客 8556

Enum 枚举类型

** Enum 枚举类型-C语言 ** 1.简介 enum是C语言中的一个关键字,enum叫枚举数据类型,枚举数据类型描述的是一组整型值的集合(这句话其实不太妥当),枚举型是预处理指令#define的替代,枚举和宏其实非常类似,宏在预处理阶段将名字替换成对应的值,枚举在编译阶段将名字替换成对应的值, 我们可以将枚举理解为编译阶段的宏,使用格式: enum typeName{ valueName1, valueName2, valueName3, ...... }; typeName是枚举类型的名字,花括号

Holiday_ZhuYe的博客 2820

枚举类型简单理解

枚举   枚举类型声明为一组相关的符号常数定义了一个类型名称。枚举用于“多项选择”场合,就是程序运行时从编译时已经设定的固定数目的“选择”中做出决定。   枚举类型(也称为枚举)为定义一组可以赋给变量的命名整数常量提供了一种有效的方法。例如,假设您必须定义一个变量,该变量的值表示一周中的一天。该变量只能存储七个有意义的值。若要定义这些值,可以使用枚举类型。枚举类型是使用 enum 关键字声明的...

ZhangJiqun&191cm&85kg 4015

C++ 枚举类型详解

枚举类型的定义 枚举类型(enumeration)是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。 定义格式:枚举类型的定义格式为:     enum {}; 其中: 关键字enum——指明其后的标识符是一个枚举类型的名字。 枚举常量表——由枚举常量构成。“枚举常量”或称“枚举成员”,是以标识符形式表示的整型量,表示枚举类型的取值。枚举常量表列出枚举类型的所有取

yukgwy60648的博客 7508

Java--枚举类型(枚举类型介绍 & 定义枚举类型 & 枚举类型的使用 & 枚举类型的注意事项 & 遍历枚举项)

1. 枚举类型 1.1 大量使用常量来表示数据存在以下问题: 示例: public static final String WEI_XIN = "weixin"; public static final String WEI_XIN_URL = "https://weixin.qq.com/"; public static final String ZHI_FU_BAO = "zhifubao"; public static final String ZHI_FU_BA

天行健 君子以自强不息,地势坤 君子以厚德载物。 2462
上一篇: Android应用中使用AsyncHttpClient来异步网络数据
下一篇: Android动画的使用
HabbyGe
博客等级 码龄16年 46粉丝 143原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值