Java枚举类

http://blog.csdn.net/pnuts/article/details/4039606

1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。 

虽然enum不可以有public的构造函数,但是我们还是可以定义private的构造函数,在enum内部使用。构造函数不能为public或者protected,    从而保证构造函数只能在内部使用,客户代码不能new一个枚举值的实例出来。这也是完全符合情理的,因为我们知道枚举值是public    static    final的常量而已。    

<span style="font-size:14px;">public    enum    Color  
  {     
     Red("This    is    Red"),      Green("This    is    Green"),      Blue("This    is    Blue");     
    
     private    String    desc;     
    
     Color(String    desc)
      {     
     this.desc    =    desc;     
     }     
    
     public    String    getDesc()
      {     
     return    this.desc;     
     }     
    
  }     </span>



2.所有枚举值都是public ,  static   ,  final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义    变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。   

3.Enum默认实现了java.lang.Comparable接口。     
4.Enum覆载了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”.     
5.Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“Blue”)将返回Color.Blue.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。     

<span style="font-size:14px;">Size s=Enum.valueof(Size.class,"SMALL");</span>

  6.Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。

<span style="font-size:14px;">for    (Color    c:    Color.values())     
     System.out.println(“find    value:”    +    c); 

private  static int  number = Color.values().length    ;//可以获得长度
</span>
   
7.Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。     序号从0开始。

8,  Java要求必须先定义枚举实例




http://blog.csdn.net/qq_19439251/article/details/39972639

1,为什么要有枚举?

问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday = 0;或即使使用常量方式也无法阻止意外。
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。
枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。

2,自定义类实现枚举功能
     1、私有的构造方法。
     2、每个元素分别用一个公有的静态成员变量表示。
     3、可以自定义若干个公有方法或抽象方法。

     4、 enum类型虽然不能够继承自其它基类,但是可以实现其它接口继承抽象类

     5若枚举类只有一个枚举值,则可以当作单例设计模式使用


单例设计模式(Singleton):

解决一个类在内存中只存在一个对象,比如对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。

单例设计模式之饿汉式,Single类一进内存,就已经创建好了对象,简单的说就是一上来就吃。


        想要保住对象的唯一。

  1. 1,为了避免其他程序过多建立该类对象。先禁止其他程序建立该类对象。

    2,还为了让其他程序还可以访问到该类对象。只好在本类中 ,自定义一个对象。

    3,为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。

    这三不这么用代码体现呢?

    1,将构造函数私有化,

    2,在类中创建一个本类对象。

    3,提供一个方法可以获取到该对象。

    对于事物该这么描述。还这么描述。

    当需要将该事物的对象保证在内存中的唯一时。就就以上三步加上即可。















 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值