首页 > 代码库 > 对typesafe enum模式的改进
对typesafe enum模式的改进
按照一些资料上讲,其实enum也就是在编译器层面实现用类来包装枚举(typesafe enum 模式)的思想。以保证类型安全。
自己用类来写枚举其实效果也还是不错的,只是代码略显啰嗦。
自己用类来写枚举其实效果也还是不错的,只是代码略显啰嗦。
例子代码
1 public class EnumClass1 extends EnumClass { 2 private EnumClass1(String id,String key){ 3 super(id,key); 4 } 5 6 7 8 public static final EnumClass1 ENUM_1_1=new EnumClass1 ("1","1"); 9 public static final EnumClass1 ENUM_1_2=new EnumClass1 ("2","2");10 public static final EnumClass1 ENUM_1_3=new EnumClass1 ("3","3");11 //12 public static final EnumClass1 ENUM_1_4=new EnumClass1 ("4","4");13 14 15 }
故想了一些办法来简化代码。
a.声明了一个静态方法超短名称用于创建枚举常量
b.常量变为一行语句赋值,可减少 public static final +类名 +new
问题:一行语句赋值是否不太符合编码惯例。 我觉得类型安全枚举,算是特例吧。它的成员都是一个类型
代码量就接近于直接用enum了
enum的其他优势: switch语句,这方面用类就无能为力了 无法完全替代enum的功能。
public class EnumClass1 extends EnumClass {private EnumClass1(String id,String key){super(id,key);}public static EnumClass1 o(String id, String key){return new EnumClass1(id, key);} public static final EnumClass1 ENUM_1_1=o("1","1"),ENUM_1_2=o("2","2"),ENUM_1_3=o("3","3"),//ENUM_1_4=o("4","4"); }
实际效果测试:
现有一个用此方法做的枚举类,有5个枚举常量 。
原大小为2.5K 修改后大小为2.3K貌似效果不大 ?
换另外一个枚举类型 。
共有19个枚举常量,修改前大小 3.4K,修改后大小 2.55K 。
大概少了1/4的代码。
好吧 已经算不错了。
囧
现有一个用此方法做的枚举类,有5个枚举常量 。
原大小为2.5K 修改后大小为2.3K貌似效果不大 ?
换另外一个枚举类型 。
共有19个枚举常量,修改前大小 3.4K,修改后大小 2.55K 。
大概少了1/4的代码。
好吧 已经算不错了。
囧
对typesafe enum模式的改进
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。