飞猫xxx

导航

 

 

java 枚举学习笔记

——定义:枚举是在JDK1.5之后产生的另一重要特性,在枚举中可以限制一个类的对象产生范围。在JDK1.5之前java有两种方法定义新类型:类和接口,枚举的引进可以补充这两者的不足。

1、枚举类型可以将一组类似的值包含到一种类型中。

2、声明枚举类型的格式

1 [public] enum 枚举类型名称
2 {
3     枚举对象1,枚举对象2,枚举对象3,...,枚举对象n;        
4 }

 ——枚举类的主要操作方法

int compareTo(E o)   对象比较

boolean equals(Object obj)   比较两个枚举对象

String name()  返回此枚举的名称

int ordinal()     返回枚举常量的序数

 

*下面定义一个枚举类

 1 public class GetEnumContent
 2 {
 3     public enum Color
 4     {
 5         RED,GREEN,BLUE;
 6     }
 7     public static void main(String[] args)
 8     {
 9         Color c = Color.BLUE;
10         System.out.println(c);
11     }
12 }

3、Enum类中的name()和ordinal()方法取得名称和编号

 1  public class GetEnumContent
 2   {
 3       public enum Color
 4       {
 5           RED,GREEN,BLUE;
 6       }
 7       public static void main(String[] args)
 8       {
 9          for(Color c : Color.values())
10              {
11                  System.out.println(c.name() + "——>" + c.name());
12              }    
13      }
14  }   

 

3、使用enum关键字可以定义一个枚举,实际上这个关键字表示的是java.lang.Enum类型,使用enum声明的枚举类型就相当于定义一个类,而此类默认继承java.lang.Enum类。

4.向枚举添加新属性

每个枚举类都有制定好的若干对象,每一个枚举对象也可以包含多个属性,这些属性可以通过构造方法为其赋值。

 1 public enum Color {
 2     RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
 3     // 成员变量
 4     private String name;
 5     private int index;
 6     // 构造方法
 7     private Color(String name, int index) {
 8         this.name = name;
 9         this.index = index;
10     }
11     // 普通方法
12     public static String getName(int index) {
13         for (Color c : Color.values()) {
14             if (c.getIndex() == index) {
15                 return c.name;
16             }
17         }
18         return null;
19     }
20     // get set 方法
21     public String getName() {
22         return name;
23     }
24     public void setName(String name) {
25         this.name = name;
26     }
27     public int getIndex() {
28         return index;
29     }
30     public void setIndex(int index) {
31         this.index = index;
32     }
33 }

 5、让枚举类实现接口

枚举类也可以实现接口,但因为接口中会存在抽象方法,所以枚举类中的每个对象必须分别实现此抽象方法。

 1 interface Print                        //定义Print接口
 2 {
 3     public String getColor();        //定义抽象方法
 4 }
 5 enum Color implements Print        //枚举类实现接口
 6 {
 7     RED
 8     {
 9         public String getColor()    //枚举对象实现抽象方法
10         {
11             return "红色";
12         }
13     },
14     GREEN
15     {
16         public String getColor()
17         {
18             return "绿色";
19         }
20     },
21     BLUE
22     {
23         public String getColor()
24         {
25             return "蓝色";
26         }
27     }
28 }
29 public class InterfaceEnumDemo
30 {
31     public static void main(String[] args)
32     {
33         for(Color c : Color.values())            //foreach输出
34         {
35             System.out.print(c.getColor() + " ");
36         }
37     }
38 }

6、在枚举类中定义抽象方法

7、比较器

在Enum类的定义中已经实现好了Comparable接口,所以枚举类的内容是可以进行排序的。排序的规则通过Comparable接口完成。

8、总结

——在程序中可以使用一个枚举类来指定对象的取值范围

——在java中使用enum关键字定义一个枚举类,每一个枚举类都是继承Enum类。

——所有的枚举类都可以直接使用Comparable进行排序,因为Enum类实现了Comparable接口。

 

 

posted on 2013-08-14 23:54  飞猫xxx  阅读(242)  评论(0)    收藏  举报