浏览 1861 次
锁定老帖子 主题:使用枚举类型的一个注意点
精华帖 (0) :: 良好帖 (0) :: 新手帖 (6) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-08-10
对于枚举类型,有一点需要非常注意: 可以在其中定义数组常量,但是最好不要在使用内部构造函数时使用这些数组常量,因为此时这些数组常量可能尚未初始化,估计是由于初始化顺序的问题。 对于以下程序,我在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){ } //省略若干方法 } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-08-10
找到原因了:
http://rednaxelafx.iteye.com/blog/460981 |
|
返回顶楼 | |