黑马程序员---枚举

来源:互联网 发布:淘宝返现app叫什么 编辑:程序博客网 时间:2024/06/05 09:22

----------------------android培训java培训、期待与您交流! --------------------

枚举

1、枚举是什么?   

       枚举的定义:枚举也就是一个类,就是让某一个引用类型的变量的取值在一些固定的取值范围之内,它是一个常量。他的每一个元素就相当于他的一个实例对象。但是枚

       举他自身是不能创建对象的,因为他的构造函数式

       例如:我们常说的春、夏、秋、冬就是固定不变的,这时候我们就需要用一些常量来表示,我们就要用到了枚举。

2、枚举的作用??

          可以让编译器在编译的时候就可以控制程序不能填写非法值,一般的定义变量的方式无法实现这个作用。

3、枚举是怎么创建的?

     3.1用一般类是怎么实现枚举的?

    public class ColorTest      {            public static void main(String[] args)           {                     Color color1=Color.RED;                     Color color2=Color.GREEN;                     Color color3=Color.BLUE;                     System.out.println(color1.getName());                     System.out.println(color2.getName());                     System.out.println(color3.getName());          }      }       public class Color        {               private String name;              private Color(String name)              {                         this.setName(name);              }           //在本类中穿件实例对象                 public static final Color RED=new Color("hong");                 public static final Color GREEN=new Color("lu");                 public static final Color BLUE=new Color("lan");                 public String getName()// 获取当前的颜色名称                 {                            return name;                 }                 public void setName(String name) //设置当前颜色的名称                 {                            this.name = name;                 }         }



          以上程序将Color 类中的构造方法私有了,之后在类中准备了若干个实例化对象,以后要取得Color 类的实例则     只能用RED,GREEN,BLUE三个对象,这样就有效的控制了对象的取得范围。


    3.2在java中枚举的实现方式

  public enum WeekDay1//java在enum中低层自动锁调用toString()等方法;       {                    //带有构造函数的枚举  构造函数应该被私有          SUN,MON,TUE,SAT;          private WeekDay1(){System.out.println(1);};          private WeekDay1(int a){System.out.println(2);}       }


     注意:在定义枚举元素的时候,必须定义在他的首行,中间用逗号隔开,最后用分号结束
     思考:当我们的枚举元素只有一个的时候,可以把它弄成是单例设计模式???
      3.3 取得枚举的信息
     ordinal 则会从 0 开始依次进行编号,之后可以使用Enum 提供的name() 和ordinal() 方法获取名称和编号。
     3.4 通过构造方法为属性赋值:
     每个枚举类中都有其指定好的若干对象,当然每一个枚举类对象中也可以包含多个属性。而这些属性也可以通过    构造方法为其赋值。
      通过构造方法为枚举元素赋值:

  class ConstructorEnum {  publci static void main(String[] args)  {   for(Color c:Color.values())   {    System.out.println(c.ordinal()+":::"+c.name()+c.getName());   }  } } //在这个例子中,c.ordinal()返回的就是枚举时候的顺序,c.name()返回的枚举元素的名称,c.getName()         //返回的是我们给他所穿进去的值 enum Color {  RED,GREEN,BIUE;  private String name;  private Color(String name){this.setName(name);}  public String getName(){return name;}  public void setName(){this.name=name;} }


 

            知识小扩展:枚举本身已经implements了Comparable接口,他自身是具备比较性的。所以我们将其传入TreeSet      集合的时候他已经给其排序了

 

 

----------------------android培训java培训、期待与您交流! --------------------

 

 

 

原创粉丝点击