分类: Java
【枚举】_枚举的作用笔记
本章目标:
掌握枚举的作用
可以使用enum关键字定义一个枚举类
枚举简介:
在JDK1.5之前,java可以有两种方式定义新类型:类和接口。对于大部分面向对象编程来说,这两种方式看起来似乎足够了。但是在一些特殊情况下,这些方法就不适合。例如,想定义一个Color类,它只能有Red、Green、Blue三种值,其它的任何值都是非法的,那么JDK1.5之前虽然可以构造这样的代码,但是要做很多的工作,也有可能带来各种不安全的问题。而JDK1.5之后引入了枚举类型(Enum)就能避免这些问题。
此时,程序限定了所能取的对象的范围,所以达到了枚举的功能,以上是一种枚举的方式,在最早的java开发中因为没有枚举这种概念,所以有时候也使用接口表示。
因为以上的所有取值是直接通过数字表示的,所以操作的时候也存在问题。
这样的操作并不会很明确,所以在JDK1.5之前如果要想实现枚举的操作,则就会比较麻烦。
定义一个枚举类型
在JDK1.5之后,引入了一个新的关键字————enum,可以直接定义枚举类型,格式如下:
[public] enum 枚举类型名称{
枚举对象1,枚举对象2,...,枚举对象n;
}
使用enum关键字定义。
枚举中有三个取值。
以后在取得的时候,只能从这三个内容取
因为枚举已经指定好了范围,所以可以使用foreach进行全部的输出,使用“枚举.values”的形式取得全部的枚举内容。
还可以直接将内容在Switch语句上使用。
常错误:需要非限定枚举常量名称 case RED:{
这时一定要看看Color.java中是否存在该值。
总结:
1、使用枚举可以限制取值的范围
2、使用enum关键字可以定义枚举
本章目标:
掌握枚举的作用
可以使用enum关键字定义一个枚举类
枚举简介:
在JDK1.5之前,java可以有两种方式定义新类型:类和接口。对于大部分面向对象编程来说,这两种方式看起来似乎足够了。但是在一些特殊情况下,这些方法就不适合。例如,想定义一个Color类,它只能有Red、Green、Blue三种值,其它的任何值都是非法的,那么JDK1.5之前虽然可以构造这样的代码,但是要做很多的工作,也有可能带来各种不安全的问题。而JDK1.5之后引入了枚举类型(Enum)就能避免这些问题。
- class Color{
- public static final Color RED = new Color("红色");
- public static final Color GREEN = new Color("绿色");
- public static final Color BLUE = new Color("蓝色");
- private String name;
- private Color(String name){
- this.name = name;
- }
- public void setName(String name){
- this.name = name;
- }
- public String getName(){
- return this.name;
- }
- public static Color getInstance(int i){
- switch(i){
- case 1:{
- return RED;
- }
- case 2:{
- return GREEN;
- }
- case 3:{
- return BLUE;
- }
- default:{
- return null;
- }
- }
- }
- };
- public class ColorDemo01{
- public static void main(String args[]){
- Color c1 = Color.RED; //取得红色
- System.out.println(c1.getName());
- Color c2 = Color.getInstance(3);
- System.out.println(c2.getName());
- }
- }
此时,程序限定了所能取的对象的范围,所以达到了枚举的功能,以上是一种枚举的方式,在最早的java开发中因为没有枚举这种概念,所以有时候也使用接口表示。
- interface Color{
- public static final int RED = 1; //定义红色
- public static final int GREEN = 2; //定义绿色
- public static final int BLUE = 3; //定义蓝色
- }
因为以上的所有取值是直接通过数字表示的,所以操作的时候也存在问题。
- interface Color{
- public static final int RED = 1; //定义红色
- public static final int GREEN = 2; //定义绿色
- public static final int BLUE = 3; //定义蓝色
- }
- public class ColorDemo02{
- public static void main(String args[]){
- System.out.println(Color.RED+Color.GREEN); //颜色相加
- }
- }
这样的操作并不会很明确,所以在JDK1.5之前如果要想实现枚举的操作,则就会比较麻烦。
定义一个枚举类型
在JDK1.5之后,引入了一个新的关键字————enum,可以直接定义枚举类型,格式如下:
[public] enum 枚举类型名称{
枚举对象1,枚举对象2,...,枚举对象n;
}
使用enum关键字定义。
- public enum Color{
- RED,GREEN,BLUE; //定义三个枚举的类型
- }
枚举中有三个取值。
以后在取得的时候,只能从这三个内容取
- public class GetEnumContent{
- public static void main(String args[]){
- Color c = Color.BLUE;
- System.out.println(c);
- }
- }
因为枚举已经指定好了范围,所以可以使用foreach进行全部的输出,使用“枚举.values”的形式取得全部的枚举内容。
- public class PrintEnum{
- public static void main(String args[]){
- for(Color c:Color.values()){
- System.out.println(c);
- }
- }
- }
还可以直接将内容在Switch语句上使用。
- public class SwitchPrintEnum{
- public static void main(String args[]){
- for(Color c:Color.values()){
- print(c);
- }
- }
- public static void print(Color color){
- switch(color){
- case RED:{
- System.out.println("红色");
- break;
- }
- case GREEN:{
- System.out.println("绿色");
- break;
- }
- case BLUE:{
- System.out.println("蓝色");
- break;
- }
- default:{
- System.out.println("未知颜色");
- break;
- }
- }
- }
- }
常错误:需要非限定枚举常量名称 case RED:{
这时一定要看看Color.java中是否存在该值。
总结:
1、使用枚举可以限制取值的范围
2、使用enum关键字可以定义枚举