Java枚举类型

整理自己的技术知识-枚举的知识

一、枚举类的特性

1、枚举类也是一种特殊形式的Java类;

2、枚举类中声明的每一个枚举值代表枚举类的一个实例对象;

3、与java中的普通类一样,在声明枚举类时,也可以声明属性、方法和构造函数,但枚举类的构造函数必须为私有的(不能再new对象)。

4、枚举类也可以实现接口、或继承抽象类。

5、JDK5中扩展了swith语句,它除了可以接受int、byte、char、short外,还可以接收一个枚举类型。

6、若枚举类只有一个枚举值,则可以当作单态设计模式使用。

二、基本知识点

1、什么是枚举和定义枚举;

2、定义枚举的构造函数、方法和字段;(枚举的构造函数必须为私有的)

3、带抽象方法的枚举;

4、枚举的常用方法和其它细节。(String name();int ordinal();valueOf(String str);values()。

三、代码示例

 1 package com.itcast.enumeration2;
 2 
 3 import org.junit.Test;
 4 
 5 public class EnumTest {
 6 
 7     @Test
 8     public void testEnum() {
 9         printGrade(GradeInClass.A);
10         printGrade(GradeInEnum.A);
11         GradeInEnum g=GradeInEnum.valueOf("B");
12         System.out.println(g);
13         GradeInEnum gs[]=GradeInEnum.values();
14         for(GradeInEnum g1:gs){
15             System.out.println(g1);
16         }
17     }
18 
19     private void printGrade(GradeInEnum grade) {
20         System.out.println(grade);
21         System.out.println(grade.name());
22         System.out.println(grade.ordinal());
23         System.out.println(grade.getValue());
24         System.out.println(grade.localValue());
25 
26     }
27 
28     private void printGrade(GradeInClass grade) {
29         System.out.println(grade);
30     }
31 }
32 
33 /**
34  * 带抽象方法的枚举
35  * @author chuyuqiao
36  *
37  */
38 enum GradeInEnum {//class
39     A("90~100") {
40         @Override
41         public String localValue() {
42             return "优";
43         }
44     }, 
45     B("80~89") {
46         @Override
47         public String localValue() {
48             return "良";
49         }
50     }, 
51     C("70~79") {
52         @Override
53         public String localValue() {
54             return "合格";
55         }
56     };       //Object
57     private String value;
58     private GradeInEnum(String value){
59         this.value=value;
60     }
61     public String getValue(){
62         return this.value;
63     }
64     public abstract String localValue();
65 }
66 
67 class GradeInClass {
68 
69     private GradeInClass() {
70     };
71 
72     public static final GradeInClass A = new GradeInClass();
73     public static final GradeInClass B = new GradeInClass();
74     public static final GradeInClass C = new GradeInClass();
75 }
76 
77 //用单态设计模式设计一个类
78 enum A{//class
79     A; //Object
80 }

 

posted on 2016-05-15 12:58  有味青年  阅读(76)  评论(0)    收藏  举报

导航