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定义取值。

  • 相关阅读:
    一篇文章教会你理解Scrapy网络爬虫框架的工作原理和数据采集过程
    Windows下安装Scrapy方法及常见安装问题总结——Scrapy安装教程
    Spring AOP里面的通知Advice类型
    Spring AOP面向切面编程核心概念
    ZeroC ICE的远程调用框架 Callback(一)-AMI异步方法调用框架
    ZeroC ICE的远程调用框架 class与interface
    ZeroC ICE的远程调用框架 AMD
    ZeroC ICE的远程调用框架
    ZeroC ICE中的对象模型和概念
    ZeroC ICE中的对象
  • 原文地址:https://www.cnblogs.com/alsf/p/6259941.html
Copyright © 2011-2022 走看看