`

enum使用

    博客分类:
  • java
阅读更多
public enum TaskState {

	init, checkedRequest, checkedResource, resourceLack, checkedCopyFinish, unZip, runCalcul, checkedNewOutput, zipAndCopyOutput, checkedProcessState, end, error,

}

 自定义的enum类,

使用一般使用enum都是switch吧?

反正我是这么用的

public void run() {
		TaskState ta = TaskState.init;
		while (shutdownRequested) {
			switch (ta) {
			//init state
			case init:
				if (checkRequest() != 0) {
					ta = TaskState.checkedRequest;
					sleepTime(config.getWAITTIMEN1());
				}
				else{
				sleepTime(config.getWAITTIMEN1());
				}
				break;
			//a new Request file find
			case checkedRequest:
				if (checkConditions() == 0) {
					ta = TaskState.resourceLack;
				} else {
					ta = TaskState.checkedResource;
				}
				break;
			//compute resource lack
			case resourceLack:
				outputResourceLack();
				clearFolder();
				ta = TaskState.init;
				break;
			//compute resource OK
			case checkedResource:
				if (checkedCopyFinish() == 0) {

				} else {
					ta = TaskState.checkedCopyFinish;
				}
				break;
			//compute file zip copy finished
			case checkedCopyFinish:
				unzipFolder();
				ta = TaskState.unZip;
				break;
			//unzip ok
			case unZip:
				runCalcul();
				ta = TaskState.runCalcul;
				break;
			//run calcul.exe 
			case runCalcul:
				int i = checkProcessState();
				if (i == 1) {
					ta = TaskState.checkedProcessState;
				}
				if (i == 2) {
					ta = TaskState.end;
				}
				if (i == 2) {
					ta = TaskState.error;
				}
				break;
			//the calcul process is running 
			case checkedProcessState:
				if (checkNewOutput() == 0) {
					ta = TaskState.runCalcul;
				} else {
					ta = TaskState.checkedNewOutput;
				}
				break;
			//a new intermediate results output 
			case checkedNewOutput:
				zipFolder();
				ta = TaskState.runCalcul;
				break;
			//the process end
			case end:
				zipFolder();
				clearFolder();
				ta = TaskState.init;
				break;
			//the process error
			case error:
				zipFolder();
				clearFolder();
				ta = TaskState.init;
				break;

			default:
				//write answer file ,and thread sleep 
				updateAnswer();				
				break;

			}

		}

	}

 

大家随便看看吧,比较简单的switch配合 enum

 

分享到:
评论

相关推荐

    Java Enum使用Demo源码

    本篇将通过"Java Enum使用Demo源码"深入探讨Java枚举的用法。 首先,枚举在Java中是一个类,可以通过`enum`关键字来声明。例如,我们可以创建一个表示星期的枚举类型: ```java public enum WeekDay { MONDAY, ...

    Java中的Enum的使用与分析

    ### Java中的Enum使用与分析 #### 一、概述 在Java编程语言中,`Enum`是一种特殊的数据类型,用于表示一组固定的常量值。通过枚举(`enum`),开发者可以更加直观地定义一系列预定义的值,并为这些值提供类型安全...

    Enum的用法

    4. **使用私有构造函数**:虽然`Enum`禁止公开构造函数,但可以定义私有构造函数并在枚举体内部使用,以便为枚举值提供额外的信息或状态,如描述信息: ```java public enum Color { Red("This is Red"), Green...

    Enum汇总大全详细讲解

    枚举(Enum)在Java中是一种特殊的类,用于定义固定的常量集合,它提供了一种安全、类型化的常量表示方式。以下是对Enum的详细讲解: 1. **基本枚举定义**: ```java enum Color {BLUE, RED, GREEN;} ``` 这是...

    cpp-BetterEnums编译时期枚举库拥有干净的语法只有一个头文件没有依赖性

    cpp-BetterEnums是一个优秀的C++库,它提供了编译时期的枚举增强功能,旨在改善标准C++枚举的使用体验。该库由Aantron开发,其主要特点在于简洁的语法、轻量级的实现以及无任何外部依赖性,这使得它在实际项目中易于...

    protobuf枚举和包的使用

    这个教程将深入讲解protobuf中的枚举(Enum)和包(Package)的使用,帮助你更好地理解和应用protobuf。 一、protobuf枚举(Enum) 枚举在编程中是一种常量集合,它提供了类型安全和可读性。在protobuf中,枚举...

    Options:有时在某些情况下,您想在OptionSet中使用Enum或希望Enum由Raw的Int类型支持,但同时也具有String标签

    目录介绍特征安装用法设置一个MappedValueRepresentable枚举使用MappedValueCollectionRepresented 使用MappedEnum类型的可编码枚举在ESet中使用OptionSet中的EnumSet 将EnumSet转换为Enum数组使用...

    enum类型重定义解决方法

    在编程中,`enum`(枚举)类型是用来定义一组命名的整数常量,它在C++中被广泛使用。然而,在某些情况下,我们可能会遇到`enum`类型的重定义问题,这通常发生在包含不同库或者头文件时,因为这些库可能已经定义了...

    java枚举类型enum的使用

    ### Java 枚举类型 enum 的使用详解 #### 一、枚举类型概述 在 Java 中,枚举(enum)是一种特殊的类,它被用来表示一组固定的常量值。枚举类型自 JDK 1.5 开始引入,为开发者提供了一种更加安全、简洁的方式来...

    ENUM softphone 安装使用及SDK说明

    ENUM标准是IETF制定的协议,旨在将E.164电话号码映射为DNS域名,从而使得电话号码能够在互联网上作为地址资源使用,整合了传统电信业务和互联网业务。 1. SIP协议与SIP系统组成 SIP(Session Initiation Protocol)...

    java 中enum的使用方法详解

    下面我们将深入探讨enum的使用方法。 1. **定义枚举** 定义枚举的关键字是`enum`,例如: ```java public enum WeekDays { MON, TUE, WED, THU, FRI, SAT, SUN; } ``` 这里我们创建了一个名为`WeekDays`的...

    Laravel开发-enum

    本教程将深入探讨如何在Laravel项目中使用enum类,以及它能为代码质量、可读性和可维护性带来的好处。 1. **什么是PHP枚举(Enums)?** PHP枚举是类型安全的数据结构,允许我们定义一组相关的常量,它们的值在运行时...

    enum 结构分析源码

    在这个“enum 结构分析源码”资源中,我们主要关注的是C语言中的枚举使用和实现。C语言中的enum并不是一种真正的类型,而是对整型变量的一种别名,它提供了更易读的常量名称。 首先,我们来看`enum.c`这个源文件。...

    Java枚举类型Enum的用法

    Java枚举类型(Enum)是Java SE 5.0引入的一种新的数据类型,它为开发者提供了更为强大且安全的方式来表示一组常量。枚举在Java中不仅是一个类,还是一种特殊的类型,允许我们定义自己的常量集合。接下来,我们将...

    enum 简单使用例子

    本文将深入探讨`enum`的简单使用方法以及如何结合委托(delegate)进行应用。 首先,我们来看如何声明一个枚举。在C#中,你可以使用`enum`关键字来创建一个新的枚举类型。下面是一个简单的例子: ```csharp public...

    C++中枚举类型(enum)

    ### C++中的枚举类型(Enum) 在C++编程语言中,枚举(`enum`)是一种用户定义的类型,它由一组具有整数值的命名常量组成。这些值可以被程序用来代替数字,使代码更具可读性,并且能够表示特定范围内的固定集合。 ...

    Java enum的用法详解

    在上面的示例中,我们使用 enum 来定义一个 `Signal` 枚举类型,并在 `TrafficLight` 类中使用 switch 语句来处理不同的信号状态。 用法三:添加新方法 如果我们想要在 enum 中添加新的方法,那么必须在 enum 实例...

    Laravel开发-laravel-enum

    Laravel Enum库是为Laravel应用程序设计的一个扩展,它允许开发者使用枚举类型来替代传统的常量或字符串,从而使得业务逻辑更清晰,减少错误的可能性。下面将详细探讨Laravel Enum的使用、优点以及如何在项目中实现...

    MYSQL专题-查询优化-使用索引-安全隐患-事务与锁.docx

    使用 ENUM 可以把某个数据列的基数很低的值转换为 ENUM 列,ENUM 值可以被更快地处理,因为它们在内部表现为数值。 四、优化 GROUP BY 语句 默认情况下,MySQL 排序所有 GROUP BY 包含的字段,为了防止排序结果的...

Global site tag (gtag.js) - Google Analytics