枚举

使用enum建立简单的状态机

拈花ヽ惹草 提交于 2020-03-01 09:36:18
Overview The enum in Java is more powerful than many other languages which can lead to surprising uses. In this article, I outline some the individual features of enum in Java, and put them together to form a state machine. Enum for Singleton and Utility class You can use an enum as a Singleton or Utility very simply. enum Singleton { INSTANCE; } enum Utility { ; // no instances } Enum to implement an interface You can also implement an interface in an enum. interface Named { public String name(); public int order(); } enum Planets implements Named { Mercury, Venus, Earth, Mars, Jupiter,

JAVA基础之枚举

妖精的绣舞 提交于 2020-02-29 11:22:45
1、枚举的作用 如果程序运行时需要的数据只能是一定范围内的值,jdk5之前我们可以采用自定义类来解决,jdk5后就可以直接采用枚举来解决了。 例如要限定操作类型只能为增删改查四种,我们可以用自定义类的方式解决如下: public class Operation { private String operType; private Operation(String operType) { this.operType = operType; } public static final Operation ADD = new Operation("add"); public static final Operation DELETE = new Operation("delete"); public static final Operation MODIFY= new Operation("modify"); public static final Operation SELECT = new Operation("select"); public String getOperType() { return operType; } } jdk5后我们就可以通过枚举来更简洁的解决问题: public enum OperationByEnum { ADD("add"), DELETE(

java枚举的使用, 常量与枚举的区别

拥有回忆 提交于 2019-12-29 13:11:12
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> public enum Light { RED, GREEN, YELLOW; } 我们只能够表示出红灯、绿灯和黄灯,但是具体的值我们没办法表示出来。 别急,既然枚举类型提供了构造函数,我们可以通过构造函数和覆写toString方法来实现 首先给Light枚举类型增加构造方法,然后每个枚举类型的值通过构造函数传入对应的参 数, 同时覆写toString方法,在该方法中返回从构造函数中传入的参数,代码如 下: public enum Light { RED("红灯"), GREEN("绿灯"), YELLOW("黄灯"); private String code; private Light(String code) { this.code = code; } // @Override // public String toString() { // return String.valueOf(this.code); // } } class EnumTest{ public static void main(String[] args) { System.out.println("============演示枚举类型的遍历:"); testListEnum(); } static void

第十章 Scala 容器基础(二十六):创建并使用Enumerations

依然范特西╮ 提交于 2019-12-17 13:33:53
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Problem 你准备使用一个枚举类(一组被命名的值作为常量)在你的应用里。 Solution 继承scala.Enumeration来创建你的枚举类: package com.acme.app { object Margin extends Enumeration { type Margin = Value val TOP, BOTTOM, LEFT, RIGHT = Value } } object Main { def main(args: Array[String]) { import com.acme.app.Margin._ val currentMargin = TOP if (currentMargin == TOP) println("working on TOP") import com.acme.app.Margin Margin.values.foreach(println) } } 对于创建一组常量, Enumerations是非常有用的,比如一周中的天,一年中的周。还有许多其他的情况,当你用到一组相关常量的时候。 你也可以用下面这种方案,但是他回根据你的代码去生成4次,并且如果你只是想把它作为枚举来用的话,有许多东西是你用不到的: package com.acme.app {

scala.Enumeration 枚举示例

我是研究僧i 提交于 2019-12-17 12:57:38
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 简介 在Scala中并没有枚举类型,但在标准类库中提供了Enumeration类来产出枚举。扩展Enumeration类后,调用Value方法来初始化枚举中的可能值。 内部类Value实际上是一个抽象类,真正创建的是Val。因为实际上是Val,所以可以为Value传入id和name 如果不指定,id就是在前一个枚举值id上加一,name则是字段名 scala枚举示例 object TrafficLightColor extends Enumeration { type TrafficLightColor = Value val Red = Value(0, "Stop") val Yellow = Value(10) val Green = Value("Go") } object Margin extends Enumeration { type Margin = Value val TOP, BOTTOM, LEFT, RIGHT = Value } import test.TrafficLightColor._ import test.Margin._ object Driver extends App { println(BOTTOM, BOTTOM.id) def doWhat(color:

第六章 对象

狂风中的少年 提交于 2019-12-07 08:36:13
1、 编写一个Conversions对象,加入inchesToCentimeters,gallonsToLiters和milesToKilometers方法 object Conversions{ def inchesToCentimeters()={} def gallonsToLiters()={} def milesToKilometers()={} } 2、前一个练习不是很面向对象。提供一个通用的超类UnitConversion并定义扩展该超类的InchesToCentimeters, GallonsToLiters和MilesToKilometers对象 class UnitConversion{ def inchesToCentimeters(){} def gallonsToLiters(){} def milesToKilometers(){} } object InchesToCentimeters extends UnitConversion{ override def inchesToCentimeters()={} } object GallonsToLiters extends UnitConversion{ override def gallonsToLiters()={} } object MilesToKilometers extends

Swift解读专题一——Swift2.2语言预览

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-03 08:58:04
专题一——Swift2.2语言预览 一、引言 本系列专题是我通过阅读Swift2.2语言开发文档,翻译总结加上自己的理解整理而成。其中大部分结构和内容都来自开发文档,有疏漏和错误之处,还望更多朋友指出,共同交流进步,我的QQ:316045346。 二、从HelloWorld开始 在学习很多编程语言时,都是从HelloWorld入门,下面代码就是一个完整的HelloWorld程序: print("Hello, World!") 分析上面代码,可以发现Swift语言的3个十分明显的特点: 1.开发者不需要引入输入输出相关的函数库。 2.在编写代码时,不需要在语句的结尾处添加分号。 3.全局的代码就是程序的入口,不需要类似C系语言的main()方法来作为程序入口。 三、常量与变量 常量和变量是编程语言中最基础的两类数据类型,常量可以理解为为某个值起一个特定的名字,常量通常提供给开发者用于某些只赋值一次但却在程序中多处使用的量值。变量也可以进行多次修改。分别使用let和var创建常量和变量。例如: let letValue = 4 var varValue = 8 varValue = 16 开发者在进行常量和变量的创建时,并不需要制定类型,编译器与根据第一次赋值的类型来推断出常量或者变量的类型,然而这并不是说Swift语言不严格要求变量或常量的类型,一旦编译器推断了值的类型

Swift讲解专题九——枚举

六眼飞鱼酱① 提交于 2019-12-03 08:57:13
Swift讲解专题九——枚举 一、引言 在Objective-C语言中,没有实际上是整型数据,Swift中的枚举则更加灵活,开发者可以不为其分配值类型把枚举作为独立的类型来使用,也可以为其分配值,可以是字符,字符串,整型或者浮点型数据。 二、枚举语法 Swift中enum关键字来进行枚举的创建,使用case来创建每一个枚举值,示例如下: //创建姓氏枚举,和Objective-C不同,Swift枚举不会默认分配值 enum Surname { case 张 case 王 case 李 case 赵 } //创建一个枚举类型的变量 var myName = Surname.张 //如果可以自动推断出类型 则枚举类型可以省略 myName = .李 var myName2:Surname = .王 同样可以将枚举值都写在同一个case中,使用逗号分隔: enum Planet { case Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune } 枚举经常会和Switch语句结合使用,示例如下: switch myName { case .张: print("姓氏张") case .王: print("姓氏王") case .李: print("姓氏李") case .赵: print("姓氏赵") } 三

为什么java中用枚举实现单例模式会更好

五迷三道 提交于 2019-11-28 11:49:51
枚举单例是java中使用枚举提供一个实例对象来实现单例模式的一种新方法,虽然单例模式在java中早已存在,但枚举单例实际上从java5引入枚举作为它的关键特性之后相对来说还是一个新的概念,这篇文章和我先前发表的关于单例的文章有一定的关联性,一篇是 java单例模式的10个面试问题 ,讲的是java面试中关于单例模式常见的10个问题,另一篇是 10个关于java枚举的例子 ,这里面讲了枚举的很多作用。这篇文章是关于我们为什么要使用枚举来实现单例模式,它和传统的单例模式实现方法比起来有哪些好处呢? 下面是我总结的使用枚举实现单例模式的几个原因。另外,如果你喜欢关于设计模式的文章,你也可以看看我发表的关于 生成器模式 和 装饰器模式 的文章。 1)枚举单例模式代码简洁 这是迄今为止最大的优点,如果你曾经在java5之前写过单例模式实现代码,那么你会知道即使是使用双检锁你有时候也会返回不止一个实例对象。虽然这种问 题通过改善java内存模型和使用volatile变量可以解决,但是这种方法对于很多初学者来说写起来还是很棘手。相比用 synchronization的双检索实现方式来说,枚举单例就简单多了。你不相信?比较一下下面的双检索实现代码和枚举实现代码就知道了。 用枚举实现的单例: 这是我们通常写枚举单例的方式,它可能包含实例变量和实例方法,但是简单来说我什么都没用