zoukankan      html  css  js  c++  java
  • 枚举:enum

    枚举

    所谓枚举就是指定好取值范围,所有内容只能从指定范围取得

    例如,想定义一个color类,他只能有RED,GREEN,BLUE三种植。

    使用简单类完成颜色固定取值问题。

    1,就是说,一个类只能完成固定几个对象。

    public enum Color{
        RED,GREEN,BLUE ;    // 定义三个枚举的类型
    };

    第一种方法:传统的设定固定值,通过使得构造方法私有化(使得值固定几个,不可从外部修改),通过单态模式。

    代码如下:

    package 类集;
    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 test1{
        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()) ;
        }
    };

    输出结果:

    红色
    蓝色

    此时程序限定了范围,达到了枚举的功能。

    枚举定义格式如下:

     emum 枚举类型名称{
         枚举对象1,枚举对象2,枚举对象3,,;
    }

    JAVA库中颜色枚举的定义如下:

    public enum Color{
        RED,GREEN,BLUE ;    // 定义三个枚举的类型
    };

    使用:

    package 类集;
    import java.awt.Color;
    public class test1{
        public static void main(String args[]){
            Color c = Color.BLUE ;        // 取出蓝色
            System.out.println(c) ;
        }
    };

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

    package 类集;
    enum color1
    { red,black,green
        }
    public class test1{
        public static void main(String args[]){
            for(color1 c:color1.values())
            {
                System.out.println(c);
            }
        }
    }

    枚举还可以直接将内容在switch语句使用。

    package 类集;
    enum color1
    { red,black,green
        }
    public class test1{
        public static void main(String args[]){
            for(color1 c:color1.values())
            {
                print(c);
            }
        }
        public static void print(color1 color){
            switch(color){
                case red:{
                    System.out.println("红颜色") ;
                    break ;
                }
                case black:{
                    System.out.println("黑颜色") ;
                    break ;
                }
                case green:{
                    System.out.println("绿颜色") ;
                    break ;
                }
                default:{
                    System.out.println("未知颜色") ;
                    break ;
                }
            }
        }
    };

    总结:使用枚举可以限制取值的范围。

       可以使用enum定义取值。

  • 相关阅读:
    Chapter 03Using SingleRow Functions to Customize Output(03)
    Chapter 03Using SingleRow Functions to Customize Output(01)
    Chapter 04Using Conversion Functions and Conditional ExpressionsNesting Functions
    Chapter 04Using Conversion Functions and Conditional ExpressionsGeneral Functions
    Chapter 11Creating Other Schema Objects Index
    传奇程序员John Carmack 访谈实录 (zz.is2120)
    保持简单纪念丹尼斯里奇(Dennis Ritchie) (zz.is2120.BG57IV3)
    王江民:传奇一生 (zz.is2120)
    2011台湾游日月潭
    2011台湾游星云大师的佛光寺
  • 原文地址:https://www.cnblogs.com/alsf/p/6259941.html
Copyright © 2011-2022 走看看