• Java 枚举


    金言:少用则用之!

    枚举:

    【多例设计】

    package cn.mldn.utli;
    
    class Color {
        private String title ;
        //多例设计模式
        private static final Color RED = new Color("红色");
        private static final Color GRE = new Color("绿色");
        private static final Color BLUE = new Color("蓝色");
        private Color(String title) {
            this.title = title ;
        }
        public static Color getInstance(int ch) {
            switch(ch) {
            case 1 :
                return RED ;
            case 2 :
                return GRE ;
            case 3 : 
                return BLUE ;
            default :
                return null ;
            }
        }
        public String toString() {
            return this.title ;
        }
    }
    
    public class TestDemo {
    
        public static void main(String[] args) {
            Color red = Color.getInstance(1);
            System.out.println(red.toString());    
        }    
        
    }

    枚举严格来讲所有语言都支持!在枚举产生之前,都是采用多例设计模式实现。

    枚举概念产生后,出现了新的 enum 关键字:

    定义枚举:

    package cn.mldn.utli;
    
    enum Color {  //定义枚举类
        RED,GRE,BLUE;   // 表示此处为实例化对象
        
    }
    
    public class TestDemo {
    
        public static void main(String[] args) {
            Color red = Color.RED;
            System.out.println(red);    
        }        
    }

    定义枚举之后,和先前的多例设计code相比较,枚举可以完全简化的替代多例设计模式

    枚举关键字 enum定义的枚举类实际上就是继承了 Enum 类的子类:

      Enum是一个抽象类;Enum类中定义了两个方法:

        |-- 取得枚举的索引: public final int ordinal()

        |-- 取得枚举的名字: public final String name()

        |-- 枚举类之中还有一个 values()方法,它将对象以对象数组的形式返回。

    ___________________________________________

    定义其他结构:

      枚举之中定义的构造法方法,不可以使用public声明,必须构造私有化;

      枚举对象必须放在首行,其后才会定义属性、构造、方法;

    enum Color {
        RED("红色"),BLU("绿色"),GREEN("黄色");  //枚举对象定义在枚举类中的首行
        private String title ; // 枚举类中的属性
        private Color(String title) {
            this.title = title ;
        } 
        public String toString() {
            return this.title;
        }
    
    }
    public class TestDemo {
        public static void main(String [] args) {
            for ( Color c : Color.values() ) {
                System.out.println(c.toString()) ;
            }
        }
    }

    枚举实现接口:

    interface Message{  // 定义接口类
        public String getTitle() ;
    }
    
    enum Color implements Message {  // Color枚举类实现接口
        RED("红色"),BLU("绿色"),GREEN("黄色");  //枚举对象定义在枚举类中的首行
        private String title ; // 枚举类中的属性
        private Color(String title) {
            this.title = title ;
        } 
        public String toString() {
            return this.title;
        }
        public String getTitle() { 
            // 覆写接口类方法
            return this.title;
        }
    
    }
    public class TestDemo {
        public static void main(String [] args) {
            Message msg = Color.RED ;
            System.out.println(msg.getTitle()) ;
        }
    }

    ——————————

    枚举的应用:

    枚举中支持swicth语句函数   >>>>

    enum Color {
        RED , GREEN , BLUE ;
    }
    public class TestDemo {
        public static void main(String [] args) {
            Color c = Color.RED;
            switch(c) {
                case RED : 
                    System.out.println("RED") ;
                    break ;
                case GREEN :
                    System.out.println("GREEN") ; 
                    break ;
                case BLUE :
                    System.out.println("BLUE") ;
                    break ;
            }
        }
    }

    #

    enum Sex {
        MALE("男") , FEMALE("女") ;
        private String title ;
        private Sex (String title ) {
            this.title = title ;
        }
        public String toString() {
            return this.title ;
        }
    }    
    
    class Person {
        private String name ;
        private int age ;
        private Sex sex ;
        public Person(String name , int age , Sex sex) {
            this.name = name ;
            this.age = age ;
            this.sex = sex ;
        }
        public String toString() {
            return this.name + this.age + this.sex ;
        }
    }
    public class TestDemo {
        public static void main(String [] args) {
            System.out.println(new Person("于哥" , 24 , Sex.MALE));    
        }
    }

    ————————

    总结:

      枚举属于高级的多例设计模式

      枚举的使用根据个人是否习惯使用,不习惯使用的可以依旧使用多例设计模式

  • 相关阅读:
    js 正则表达式之环视结构
    Js 控制随机数概率
    js 随机点名
    事件处理机制
    事件处理程序 (DOM0级)
    事件处理程序(HTML)
    js正则表达式 URL格式匹配详解
    CSS中的圣杯布局与双飞翼布局
    CSS中的vertical-align属性
    CSS中元素的显示模式
  • 原文地址:https://www.cnblogs.com/wangyuyang1016/p/10921053.html
Copyright © 2020-2023  润新知