zoukankan      html  css  js  c++  java
  • Java基础-枚举

    多例设计模式:
    特点: 构造方法私有化,类内部提供多个实例化对象,后面通过static方法返回

    class Color {
        private static final Color RED = new Color("RED");
        private static final Color GREEN = new Color("GREEN");
        private static final Color BLUE = new Color("BLUE");
        
        private String title;
        private Color(String title) {
            this.title = title;
        }
    
        private static Color getInstance(int ch) {
            switch (ch) {
                case 0 : return RED;
                case 1 : return GREEN;
                case 2 : return BLUE;
                default: return null;
            }
        }
        public String toString() {
            return this.title;
        }
    
        public class TestDemo {
            public static void main(String[] args) {
                System.out.println(Color.getInstance(0));
            }
        }
    }
    
    

    上面的代码是在JDK1.5 之前的做法,目的在于限制本类实例化对象的产生个数。但是JDK1.5之后用枚举进行代替,可以大大简化

    enum Color {
        RED, GREEN, BLUE;
    }
    
    public class TestDemo {
        public static void main(String[] args) {
            System.out.println(Color.RED);
        }
    }
    
    

    实际上枚举就是一种高级的多例设计模式。

    Enum类

    enum是对一种类型的包装,本质是一个class 定义的类继承了java.lang.Enum父类
    public abstract class Enum<E extends Enum<E>> extends Object implements Comparable<E>, Serializable

    Enum类中的方法
    构造方法: protectd Enum(String name, int ordinal);

    • 当定义枚举类中的对象时,系统自动进行了序号的

    取得枚举名字: public final String name()
    取得枚举序号: public final int ordinal()
    取得所有的枚举数据: values() 返回的是枚举的对象数组

    // values() 方法的使用
    public class TestDemo {
        public static void main(String[] args) {
            for (Color temp : Color.values()) { //values可以看做枚举和多例的区别
                System.out.println(temp.ordinal() + " = " + temp.name()); 
                //返回: 0 = RED 1 = GREEN 2 = BLUE
            }
        }
    }
    

    面试题:解释enum 和 Enum的区别
    enum 是一个关键字, 使用enum定义的枚举类本质上就相当于一个类继承了Enum这个抽象类

    定义枚举的其它结构

    多例设计是在一个类当中产生的,在类中可以定义更多的属性或方法

    枚举提供更强大的设计方案 + 属性 + 方法 + 接口 在枚举中定义更多的结构

    enum Color {
        RED("红色"), GREEN("绿色"), BLUE("蓝色"); // 如果定义有许多内容,枚举对象必须在第一行
        private String title;
        private Color(String title) { // 构造方法一定不能用public, 多例设计的原则
            this.title = title;
        }
        public String toString() {
            return this.title;
        }
    }
    
    public class TestDemo {
        public static void main(String[] args) {
            System.out.println(Color.RED);
        }
    }
    
    
  • 相关阅读:
    网络七层模型
    datagaridview添加序号
    sqlserver查询数据库所有字段和表的关系
    Code Project精彩系列转
    操作不同线程中的控件
    PetaPoco数据读写并发时出错
    浮点型float数据强制转换成int整型
    PetaPoco微型ORM的使用错误记录
    EF出现基础提供程序在 Open 上失败
    Python中random模块
  • 原文地址:https://www.cnblogs.com/kong-xy/p/9938562.html
Copyright © 2011-2022 走看看