java Enum 实现

版权声明:本文为博主原创文章,未经博主允许不得转载。有问题可以留言或者邮箱shusheng52@126邮箱联系 https://blog.csdn.net/xiaoshusheng10/article/details/86301947

java  数据结构中的枚举:enum使用

枚举:列出某些有穷序列集合的所有成员
 这些成员的结构就是枚举的结构,可以在枚举中单独调用,枚举类型的对象只能是枚举集合中的值。
 如果我们自定义枚举的属性,那么我们需要定义枚举的构造函数,包含枚举的所有用到属性,当编译的时候,会根据枚举成员一次次的调用构造函数。
 枚举的成成员是有序的,我们可以根据成员名称来获取成员,也可以根据序列号获取成员,或者自定义获取规则实现。
 枚举不能使用new创建

 接下来我们自定义属性来实现枚举:
 package com.fg.java.data.struct;

public enum EnumDemo {
    /**
     * 成员定义,根据逗号隔开,且每个枚举只能有一个成员集合序列
     */
    RED(1,"red",1,2,3),
    green(2,"green",4,5,6),
    blue(3,"blue",'7','8','9');
    private  Integer id;
    private String  colorName;
    private int  r;
    private int g;
    private  int b;
    private int c;

    /**
     * 构造函数
     * @param id
     * @param colorName
     * @param r
     * @param g
     * @param b
     */
    EnumDemo(Integer id, String colorName, int r, int g, int b) {
        this.id = id;
        this.colorName = colorName;
        this.r = r;
        this.g = g;
        this.b = b;
    }

    public Integer getId() {
        return id;
    }

    public String getColorName() {
        return colorName;
    }

    public int getR() {
        return r;
    }

    public int getG() {
        return g;
    }

    public int getB() {
        return b;
    }

    @Override
    public String toString() {
        return "EnumDemo{" +
                "id=" + id +
                ", colorName='" + colorName + '\'' +
                ", r=" + r +
                ", g=" + g +
                ", b=" + b +
                '}';
    }

    /**
     * 自定义获取EnumDemo对象
     * @param name
     * @return
     */
    public static EnumDemo getEnumDemo(String name){
        if(name == null){
            return null;
        }
        switch(name){
            case "red": {

                return RED;
            }
            case "green":
            {
                return green;
            }
            case "blue":
                return blue;
            default:
                return null;
        }
    }
    public static void main(String args []){
        EnumDemo demo = EnumDemo.RED;
        System.out.println(demo.toString());
        System.out.println("输出所有枚举");
        for(EnumDemo enumDemo :EnumDemo.values()){
            System.out.println(enumDemo.toString());
        }
        System.out.println("根据名称输出枚举");
        System.out.println(EnumDemo.valueOf("RED"));
        System.out.println("自定义获取枚举值的方法:");
        System.out.println(EnumDemo.getEnumDemo("red").toString());
        System.out.println("获取当前序列号:");
        System.out.println(demo.ordinal());
        System.out.println();
    }
}

猜你喜欢

转载自blog.csdn.net/xiaoshusheng10/article/details/86301947