`
thesp2
  • 浏览: 54567 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Flex/AS利用类变量加载特性实现枚举(Enum)

阅读更多
网上查了一下,Flex里是没有枚举类型的。如果想要一个类似的功能,只能自己实现。
枚举类关键在于变量只能引用,而不能自己构造,所以在构造方法里动动手脚即可。
根据Flex类加载的一些特性,我的实现如下:
package {
	public class Direction {
		public static const UP:Direction = new Direction(0);
		public static const DOWN:Direction = new Direction(1);
		public static const LEFT:Direction = new Direction(2);
		public static const RIGHT:Direction = new Direction(3);
		
		private static var _limit:Boolean = limit();
		
		private var _value:Object;
		
		public function Direction(value:Object) {
			if (_limit) {
				throw new Error("Cannot initialize Enum outside!");
				return;
			}
			this._value = value;-
		}
		
		
		private static function limit():Boolean {
			return true;
		}
		
		public function toString():String {
			switch(this._value as int) {
				case 0:
					return "Up";
				case 1:
					return "Down";
				case 2:
					return "Left";
				case 3:
					return "Right";
					
			}
			return "Undefined direction!";
		}
	}
}

对于static变量的加载,是在类刚开始加载的时候执行的。_limit在最后也就是其他枚举变量加载完毕后加载,值被设置为true,那么在以后调用构造方法的时候就会抛出错误。
测试代码:
private function init():void {
	var week:Direction = Direction.UP;
	var t:Direction = Direction.LEFT;
	trace(week);
	week = Direction.DOWN;
	trace(week);
	week = Direction.LEFT;
	trace(week);
	if (t == week) {
		trace("t is " + Direction.LEFT);
	} else {
		trace("t is not " + Direction.LEFT);
	}
	week = Direction.RIGHT;
	trace(week);
	if (t == week) {
		trace("t is " + Direction.LEFT);
	} else {
		trace("t is not " + Direction.LEFT);
	}
	week = new Direction(31);
	trace(week);
}

结果:
引用

Up
Down
Left
t is Left
Right
t is not Left

Error: Cannot initialize Enum outside!
at Direction()[C:\Users\Henry\Adobe Flash Builder 4\EnumerationTest\src\Direction.as:14]

0
4
分享到:
评论
2 楼 thesp2 2013-08-15  
很抱歉,好久不做as了
1 楼 adermon_1224 2013-04-24  
请问,如何添加泛型的属性?

相关推荐

    Java SE程序 Enum枚举类

    Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类...

    java enum 枚举 学习资料

    Enum 枚举类型是 Java 5 中引入的一种新特性,旨在解决传统的 int 枚举常量的缺陷。 1. 枚举语法 在 Java 中,枚举类型是用 enum 关键字来定义的。枚举元素列表必须写在枚举类的最前面,每个元素之间用逗号隔开,...

    Java枚举类型Enum的用法

    枚举默认继承`java.lang.Enum`类,因此它们不能直接继承其他类,但可以实现接口。这使得枚举可以具有特定的行为。 6. **枚举常量的遍历** 可以通过for-each循环遍历枚举的所有实例,如: ```java for (Color ...

    enum枚举类的应用

    包含了关于枚举类的应用,以及枚举类和接口的组合应用,扩展映射关系。很有用的工具类。

    枚举enum的一些案例

    枚举Enum的一些案例 枚举(enum)是一种特殊的值类型,它从 System.Enum 继承而来,并为基础的基元类型的值提供替代名称。枚举类型有名称、基础类型和一组字段。基础类型必须是一个内置的有符号(或无符号)整数...

    枚举语句enum用法详解

    枚举(enum)在编程语言中是一种非常有用的类型,它允许我们定义一组命名常量,这些常量通常代表一组相关的值。在C#中,枚举(enum)被广泛用于增强代码的可读性和可维护性。下面我们将深入探讨C#中的枚举用法。 一...

    java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名

    本项目"test-enum-demo-master"显然是一个用于演示如何通过反射来操作枚举类的示例。 首先,让我们理解枚举类的基本概念。枚举类在Java中用于定义一组相关的固定数量的值,这些值通常代表常量。例如: ```java ...

    枚举enum和switch 的使用

    枚举(Enum)作为编程语言中一种特殊的类型,为开发者提供了一种简洁、清晰的定义一组命名常量的方式。在C#语言中,枚举是通过`enum`关键字定义的,其本质上是一种结构体,与整型(int)紧密相关联,但提供了更丰富...

    用enum实现单例模式的方法来读取配置文件

    本篇将详细介绍如何利用枚举(enum)来实现单例模式,并结合`Properties`类解析配置文件。 首先,我们来看一下传统的单例模式实现方式,如懒汉式和饿汉式,但这些方法在多线程环境下可能会存在问题。而使用枚举实现...

    枚举类实现单例,并且解决序列化给前端展示的问题.zip

    主要测试了枚举类的饿汉式加载机制 / 单例机制。 代码中包含枚举类的基本使用,和完整的请求示例。 主要实现了枚举类创建单例后,将结果返回给前端。 看过一些其他人的实现,都比较麻烦。这是结合一些博主的代码,...

    Java中的枚举类型Enum示例源代码

    在Java中,枚举类型不是简单的常量数组,而是一种完整的类,具有类的所有特性,如方法、构造函数和继承。下面将详细探讨`Enum`的基本概念、用法以及一些高级特性。 首先,枚举类型`Enum`的定义方式如下: ```java ...

    C++中枚举类型(enum)

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

    C# 变量 枚举和数组

    对于任何级别的C#开发者,理解变量、枚举(enum)和数组是至关重要的基础概念。下面将详细介绍这三个主题。 **1. 变量** 变量在编程中扮演着存储数据的角色。它们可以是各种数据类型,如整型(int)、浮点型(float...

    enum枚举类的一些代码demo

    通过以上内容,我们可以看出Java的`enum`枚举类不仅限于简单的常量集合,它还支持丰富的特性,如方法、接口、构造函数等,使得枚举成为编写简洁、安全、可维护代码的重要工具。在实际编程中,我们应该根据需求灵活...

    高阶Java-Java枚举类型 enum 应用详解

    在Java编程语言中,枚举(enum)是一种特殊的类,用于定义一组固定的常量。它在许多场景下比使用常量或int类型的硬编码值更安全、更具可读性。本篇文章将深入探讨Java枚举的特性、用法以及如何在实际开发中充分利用...

    枚举类型的说明 enum

    枚举类型是一种特殊的类,实际上 enum 声明定义的类型就是一个类,这些类都是类库中 Enum 类的子类(java.lang.Enum)。它们继承了这个 Enum 中的许多有用的方法。 1、枚举类的特征 枚举类是特殊的类,其枚举值...

    java 枚举(enum) 详解(学习资料)

    Java 枚举(enum)是 Java 语言中的一个重要特性,自 Java 5 开始引入。枚举用于定义一组相关的常量,这些常量通常代表一个有限的、预定义的值集合。枚举类是一种特殊的类,它具有以下特点: 1. **枚举类的声明**:...

    enum枚举的方法

    enum枚举的方法

    深入理解 Java 枚举(枚举的方法+枚举的特性+枚举可以实现接口+组织枚举+策略枚举+枚举工具类等)

    枚举的特性: 1. 枚举的本质是 java.lang.Enum 的子类。 2. 枚举是一种特殊的类,因为被修饰为 final,所以不能继承其他类。 3. 枚举值本质上是静态常量,定义的枚举值会被默认修饰为 public static final。 4. ...

    java中enum枚举的详细用法

    Java中的枚举(enum)类型是在JDK 1.5版本引入的一个强大的特性,它用于定义一组相关的常量。在C/C++等语言中,枚举通常用来表示一组具有固定值的常量集合,但在Java中,枚举不仅限于此,它提供了更多的功能和灵活性...

Global site tag (gtag.js) - Google Analytics