zoukankan      html  css  js  c++  java
  • 黑马程序员-Java基础加强,枚举类

    ============ 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

  • 相关阅读:
    POJ1034 The dog task
    POJ1033 Defragment
    POJ1032 Parliament
    POJ1031 Fence
    POJ1030 Rating
    POJ1029 False coin
    伪元素的使用
    伪元素选择器:before 以及 :after
    jquery html() 和text()的用法
    用CSS绘制三角形
  • 原文地址:https://www.cnblogs.com/super614508584/p/3506012.html
Copyright © 2011-2022 走看看