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 }
浙公网安备 33010602011771号