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

来源:互联网 发布:淘宝怎么一键发布宝贝 编辑:程序博客网 时间:2024/05/23 23:16
【枚举】_枚举的作用笔记

本章目标:
掌握枚举的作用
可以使用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关键字可以定义枚举
原创粉丝点击