论坛首页 Java企业应用论坛

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

浏览 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){
		
	}
	//省略若干方法
}
   发表时间:2010-08-10  
找到原因了:
http://rednaxelafx.iteye.com/blog/460981
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics