【枚举】_枚举的作用笔记

【枚举】_枚举的作用笔记

分类: Java
【枚举】_枚举的作用笔记

本章目标:
掌握枚举的作用
可以使用enum关键字定义一个枚举类

枚举简介:
在JDK1.5之前,java可以有两种方式定义新类型:类和接口。对于大部分面向对象编程来说,这两种方式看起来似乎足够了。但是在一些特殊情况下,这些方法就不适合。例如,想定义一个Color类,它只能有Red、Green、Blue三种值,其它的任何值都是非法的,那么JDK1.5之前虽然可以构造这样的代码,但是要做很多的工作,也有可能带来各种不安全的问题。而JDK1.5之后引入了枚举类型(Enum)就能避免这些问题。

[java]  view plain copy print ?
  1. class Color{  
  2.     public static final Color RED = new Color("红色");  
  3.     public static final Color GREEN = new Color("绿色");  
  4.     public static final Color BLUE = new Color("蓝色");  
  5.     private String name;  
  6.     private Color(String name){  
  7.         this.name = name;  
  8.     }  
  9.     public void setName(String name){  
  10.         this.name = name;  
  11.     }  
  12.     public String getName(){  
  13.         return this.name;  
  14.     }  
  15.     public static Color getInstance(int i){  
  16.         switch(i){  
  17.             case 1:{  
  18.                 return RED;  
  19.             }  
  20.             case 2:{  
  21.                 return GREEN;  
  22.             }  
  23.             case 3:{  
  24.                 return BLUE;  
  25.             }  
  26.             default:{  
  27.                 return null;  
  28.             }  
  29.         }  
  30.     }  
  31. };  
  32. public class ColorDemo01{  
  33.     public static void main(String args[]){  
  34.         Color c1 = Color.RED;    //取得红色  
  35.         System.out.println(c1.getName());  
  36.         Color c2 = Color.getInstance(3);  
  37.         System.out.println(c2.getName());  
  38.     }  
  39. }  



此时,程序限定了所能取的对象的范围,所以达到了枚举的功能,以上是一种枚举的方式,在最早的java开发中因为没有枚举这种概念,所以有时候也使用接口表示。

[java]  view plain copy print ?
  1. interface Color{  
  2.     public static final int RED = 1;    //定义红色  
  3.     public static final int GREEN = 2;    //定义绿色  
  4.     public static final int BLUE = 3;    //定义蓝色  
  5. }  


因为以上的所有取值是直接通过数字表示的,所以操作的时候也存在问题。

[java]  view plain copy print ?
  1. interface Color{  
  2.     public static final int RED = 1;    //定义红色  
  3.     public static final int GREEN = 2;    //定义绿色  
  4.     public static final int BLUE = 3;    //定义蓝色  
  5. }  
  6. public class ColorDemo02{  
  7.     public static void main(String args[]){  
  8.         System.out.println(Color.RED+Color.GREEN);    //颜色相加      
  9.     }  
  10. }  


这样的操作并不会很明确,所以在JDK1.5之前如果要想实现枚举的操作,则就会比较麻烦。

定义一个枚举类型

在JDK1.5之后,引入了一个新的关键字————enum,可以直接定义枚举类型,格式如下:
[public] enum 枚举类型名称{
    枚举对象1,枚举对象2,...,枚举对象n;
}
使用enum关键字定义。

[java]  view plain copy print ?
  1. public enum Color{  
  2.     RED,GREEN,BLUE;    //定义三个枚举的类型  
  3. }  


枚举中有三个取值。
以后在取得的时候,只能从这三个内容取

[java]  view plain copy print ?
  1. public class GetEnumContent{  
  2.     public static void main(String args[]){  
  3.         Color c = Color.BLUE;  
  4.         System.out.println(c);  
  5.     }  
  6. }  


因为枚举已经指定好了范围,所以可以使用foreach进行全部的输出,使用“枚举.values”的形式取得全部的枚举内容。

[java]  view plain copy print ?
  1. public class PrintEnum{  
  2.     public static void main(String args[]){  
  3.         for(Color c:Color.values()){  
  4.             System.out.println(c);  
  5.         }  
  6.     }  
  7. }  


还可以直接将内容在Switch语句上使用。
[java]  view plain copy print ?
  1. public class SwitchPrintEnum{  
  2.     public static void main(String args[]){  
  3.         for(Color c:Color.values()){  
  4.             print(c);  
  5.         }  
  6.     }  
  7.     public static void print(Color color){  
  8.         switch(color){  
  9.             case RED:{  
  10.                 System.out.println("红色");  
  11.                 break;  
  12.             }  
  13.             case GREEN:{  
  14.                 System.out.println("绿色");  
  15.                 break;  
  16.             }  
  17.             case BLUE:{  
  18.                 System.out.println("蓝色");  
  19.                 break;  
  20.             }  
  21.             default:{  
  22.                 System.out.println("未知颜色");  
  23.                 break;  
  24.             }  
  25.         }  
  26.     }  
  27.   
  28. }  


常错误:需要非限定枚举常量名称 case RED:{
这时一定要看看Color.java中是否存在该值。


总结:
1、使用枚举可以限制取值的范围
2、使用enum关键字可以定义枚举
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值