============ ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ============
手动实现枚举类,设计方式:
1.通过private将构造器隐藏起来
2.把这个类的所有可能实例都是用public static final属性来保存。
3.如果有必要可以提供一些静态方法,允许其他程序根据特定参数来获取与之匹配实例。
程序代码:
1 package com.king.testseasons; 2 3 4 5 public class Season { 6 7 8 9 /** 10 11 * 程序将定义Season季节类,这个类只能产生四个对象,该Season类被定义成枚举类。 12 13 * @author 王者黑桃 14 15 */ 16 17 //把Season类定义成不可变的,将其属性也定义成final 18 19 private final String name; 20 21 private final String desc; 22 23 public static final Season SPRING=new Season("春天","风和日丽"); 24 25 public static final Season SUMMER=new Season("夏天","挥汗如雨"); 26 27 public static final Season AUTUMN=new Season("秋天","天高气爽"); 28 29 public static final Season WINTER=new Season("冬天","寒风刺骨"); 30 31 public static Season getSeason(int seasonNum){ 32 33 switch(seasonNum){ 34 35 case 1: 36 37 return SPRING; 38 39 case 2: 40 41 return SUMMER; 42 43 case 3: 44 45 return AUTUMN; 46 47 case 4: 48 49 return WINTER; 50 51 default: 52 53 return null; 54 55 } 56 57 } 58 59 //将构造器定义成private访问权限 60 61 private Season(String name, String desc){ 62 63 this.name=name; 64 65 this.desc=desc; 66 67 } 68 69 //只为name和desc提供getter方法 70 71 public String getName(){ 72 73 return this.name; 74 75 } 76 77 public String getDesc(){ 78 79 return this.desc; 80 81 } 82 83 84 85 } 86 87
上面的Season类是一个不可变类,在上面的Season类中包含了四个static final常量属性,这四个常量属性就代表了该类所能创建的对象。当其他程序需要Season对象时,即可通过如Season.SPRING的方式来获取Season对象,也可通过getSeason静态工厂方法来获得Season对象。
程序清单:
1 package com.king.testseasons; 2 3 4 5 public class SeasonTest { 6 7 8 9 /** 10 11 * @author 王者黑桃 12 13 */ 14 15 public SeasonTest(Season s){ 16 17 System.out.println(s.getName()+",最大的特点:"+s.getDesc()); 18 19 } 20 21 public static void main(String[] args) { 22 23 // 直接使用Season的SPRING常量代表一个Season对象 24 25 new SeasonTest(Season.SPRING); 26 27 28 29 } 30 31 32 33 }
从上面程序中不难看出,使用枚举类可以是程序更加健硕,避免创建对象的随意性。
============ ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ============
详细请查看:http://edu.csdn.net