`
francis.xjl
  • 浏览: 16627 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

使用枚举类型的一个注意点

阅读更多
申明:本人菜鸟~以下总结属于菜鸟级总结,大牛走开!
  

对于枚举类型,有一点需要非常注意:

可以在其中定义数组常量,但是最好不要在使用内部构造函数时使用这些数组常量,因为此时这些数组常量可能尚未初始化,估计是由于初始化顺序的问题。

对于以下程序,我在Debug时发现,当这些枚举类型调用内部构造方法时,对于那些定义在HeroEnum中的那些枚举类型数组SkillEnum[]常量居然没有初始化。

我的解决方法是:将下面的常量放到其它接口或类中就没有什么问题了。


public enum HeroEnum {
	
	//复仇之魂
	Vengeful_Spirit(HeroEnum.VS_SES),
	//众神之王
	Lord_of_Olympia(HeroEnum.LO_SES),
	//魅惑魔女
	Enchantress(HeroEnum.Enc_SES),
	//变体精灵
	Morphling(HeroEnum.Mor_SES),
	//水晶室女
	Crystal_Maiden(HeroEnum.CM_SES)
	;

	public static final SkillEnum[] VS_SES = {SkillEnum.Magic_Missile, SkillEnum.Commande_Aura, SkillEnum.Terror, SkillEnum.Nether_Swap} ;
	public static final SkillEnum[] LO_SES = {SkillEnum.Arc_Lightning, SkillEnum.Lightning_Bolt, SkillEnum.Static_Field, SkillEnum.Thundergod_Wrath};
	public static final SkillEnum[] Enc_SES = {SkillEnum.Impetus, SkillEnum.Enchant, SkillEnum.Nature_Attendants, SkillEnum.Untouchable};
	public static final SkillEnum[] Mor_SES = {SkillEnum.Waveform, SkillEnum.Adaptive_Strike, SkillEnum.Morph, SkillEnum.Replicate};
	public static final SkillEnum[] CM_SES = {SkillEnum.Frost_Nova, SkillEnum.Frostbite, SkillEnum.Brilliance_Aura, SkillEnum.Freezing_Field};

	private HeroEnum(SkillEnum[] SkillEnum){
		
	}
	//省略若干方法
}
分享到:
评论
1 楼 francis.xjl 2010-08-10  
找到原因了:
http://rednaxelafx.iteye.com/blog/460981

相关推荐

    ActionScript3.0 枚举类型的使用

    下面是一个具体的例子,展示如何定义一个枚举类型: ```as3 public final class PrintJobOrientation { public static const LANDSCAPE:String = "landscape"; public static const PORTRAIT:String = "portrait...

    易语言模拟枚举类型

    然而,易语言本身并不直接支持枚举类型,因此程序员需要通过一些技巧来模拟枚举类型的特性。 模拟枚举类型通常涉及到以下几个方面: 1. 定义枚举值:在易语言中,可以使用常量或全局变量来定义枚举值。例如,我们...

    springboot项目中枚举类型的最佳实践

    此外,还可以创建一个枚举类型转换器,以便在数据库查询时能够根据枚举名称进行匹配: ```java public class OrderStatusConverter implements AttributeConverter, String> { @Override public String ...

    枚举类型定义与变量声明定义的不同方法

    例如,定义一个表示一周七天的枚举类型: ```cpp enum Weekdays { Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }; ``` 在这个例子中,`Monday`默认值为1,`Tuesday`默认为2,...

    C# 枚举类型的实例说明

    C#中的枚举类型是一种非常实用的数据类型,它允许开发者定义一组命名的常量集合,这些常量通常代表一个特定的数值。通过枚举类型,我们可以将一系列相关的值组织在一起,提高代码的可读性和可维护性。在本文中,我们...

    各种C编译器中枚举类型大小问题

    "C编译器中枚举类型大小问题" 在不同的C编译器中,枚举类型的大小问题是一个经常被忽视的问题。不同的编译器在处理枚举类型时,...枚举类型的大小问题是一个需要注意的问题,在编写代码时需要特别小心,以免出现问题。

    枚举类型

    枚举类型在编程语言中是一种强大的工具,它允许程序员为一组相关的值定义一个命名的集合。在C#中,枚举是一种特殊的类,用于创建命名常量,这些常量可以代表整数、字符串或其他基本类型。枚举类型的使用极大地提高了...

    spring boot 枚举使用的坑整理

    枚举类型是一种特殊的数据类型,在使用时需要注意一些坑,以免出现问题。在 Spring Boot 应用程序中,枚举类型经常被用于定义一些固定的值,需要注意这些坑,以免出现问题。 需要注意以下几点: * 枚举类型的索引...

    hibernate映射枚举类型

    Hibernate,作为Java中广泛使用的对象关系映射(ORM)框架,提供了一种优雅的方式来映射枚举类型到数据库。本文将深入探讨Hibernate如何映射枚举类型,并给出实际应用示例。 ### Hibernate枚举映射方式 #### 1. `@...

    跟涛哥一起学嵌入式30:C语言枚举类型深入剖析.pdf

    当我们使用enum定义了一个枚举类型之后,其枚举值列表本质上就是一系列整数值,而且是从0开始依次递增的。尽管在C语言中enum被视为一种数据类型,但它在使用时与整型没有什么区别,既可以作为函数参数、函数返回值,...

    JAVA中的枚举类型1:基本用法.doc

    一旦定义了一个枚举类型,我们就可以像使用其他类型一样使用它。例如,可以通过枚举类型的名称来引用其成员之一: ```java Weekday wd = Weekday.MONDAY; ``` 这里将`Weekday`类型的变量`wd`赋值为`MONDAY`。由于...

    C结构体、共用体和枚举类型详解

    枚举类型定义了一个新的类型,枚举常量是该类型的实例,它们的值从0开始递增,除非在定义时指定了特定的整数。枚举常量可以被看作是整数,可以直接赋值给枚举变量。例如,定义颜色枚举`enum color`,可以有`red`、`...

    Java手动方式创建枚举类示例

    Java手动方式创建枚举类可以提供一个灵活的方式来定义和使用枚举类型。通过手动方式创建枚举类,可以更好地控制枚举类型的行为和特性。在实际编程中,可以根据需要选择合适的枚举类型来解决问题。 Java枚举类型的...

    C语言enum枚举类型解析共13页.pdf.zip

    这里定义了一个名为`Color`的枚举类型,包含三个枚举常量:Red、Green和Blue。默认情况下,第一个枚举常量的值为0,第二个为1,以此类推。可以通过显式赋值来改变这个顺序,如`Red = 1, Green = 2, Blue = 3`。 2....

    程序设计-枚举类型.pptx

    例如,创建一个表示一周七天的枚举类型`Day`: ```cpp enum Day { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; ``` 默认情况下,枚举元素从0开始自动赋值,即Sunday为0,Monday为1,...

    2022年掌握JDK1.5枚举类型Java教程.docx

    4. 构造枚举链:枚举类型可以用于构建链式结构,例如表示状态机的不同状态,每个枚举常量可以引用下一个状态,形成一个有序的链。 总之,Java的枚举类型是一种强大的工具,它提供了常量集合的安全性和灵活性,可以...

    C语言程序设计(第2版)-2期 拓展知识8-4 枚举类型.pdf

    枚举类型名是你为该枚举类型指定的一个标识符,而枚举元素表则是一系列用逗号分隔的枚举元素。每个枚举元素本质上是一个整数值,可以被显式初始化或自动按顺序赋值。 1. **枚举元素的值**: - 如果没有显式初始化...

    JAVA中的枚举类型2:高级特性.doc

    例如,下面的代码展示了如何为枚举类型`Weekday`定义一个带有一个字符串参数的构造函数: ```java public enum Weekday { SUNDAY("SUN"), MONDAY("MON"), TUESDAY("TUE"), WEDNESDAY("WED"), THURSDAY("THU"),...

    java枚举的一个例子

    1. **`values()`**:这是一个静态方法,返回当前枚举类型的所有枚举值组成的数组。在上面的例子中,可以通过`EnumTest.values()`获取所有颜色值。 2. **`valueOf(String name)`**:这个静态方法根据给定的名字返回...

    C#枚举的使用 欢迎下载

    这意味着你不能创建一个派生自现有枚举类型的新的枚举类型。这是因为枚举本身就是一种特殊的类,而类是支持继承的。但为了确保枚举类型能够保持其完整性,C#设计者决定不让枚举支持继承。 2. **没有无参数构造函数*...

Global site tag (gtag.js) - Google Analytics