JAVA枚举

概述【理解】

为了间接的表示一些固定的值,Java就给我们提供了枚举
是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内

定义格式【应用】

  • 格式
public enum s {   
	枚举项1,枚举项2,枚举项3;
}
注意: 定义枚举类要用关键字enum
  • 示例代码
package com.javaqian;
/**
 * 定义一个枚举类用来表示颜色
 */
public enum Color {
    RED,GREEN,YELLOW,BLUE,orange;
}

枚举的特点【理解】

  • 特点
  • 所有枚举类都是Enum的子类
  • 我们可以通过"枚举类名.枚举项名称"去访问指定的枚举项
  • 每一个枚举项其实就是该枚举的一个对象
  • 枚举也是一个类,也可以去定义成员变量
  • 枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略
  • 枚举类可以有构造器,但必须是private的,它默认的也是private的。
    枚举项的用法比较特殊:枚举("");
  • 枚举类也可以有抽象方法,但是枚举项必须重写该方法
  • 示例代码
package com.javaqian;

/**
 * 定义一个枚举类用来表示颜色
 */
public enum Color {
    RED("红色"){
        //如果枚举类中有抽象方法
        //那么在枚举项中必须要全部重写
        @Override
        public void draw() {
            System.out.println("this is red");
        }
    },
    GREEN {
        @Override
        public void draw() {
            System.out.println("this is green");
        }
    },
    YELLOW {
        @Override
        public void draw() {
            System.out.println("this is yellow");
        }
    },
    BLUE {
        @Override
        public void draw() {
            System.out.println("this is blue");
        }
    },
    ORANGE {
        @Override
        public void draw() {
            System.out.println("this is orange");
        }
    };
    //定义成员变量
    public String name;
    //空参构造
    private Color() {
    }
    //有参构造
    private Color(String name) {
        =name;
    }
    //抽象方法
    public abstract void draw();
}
package com.javaqian;   

public class EnumDemo {
    public static void main(String[] args) {
    /*
        1.所有枚举类都是Enum的子类
        2.我们可以通过"枚举类名.枚举项名称"去访问指定的枚举项
        3.每一个枚举项其实就是该枚举的一个对象
        4.枚举也是一个类,也可以去定义成员变量
        5.枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,
          但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略
        6.枚举类可以有构造器,但必须是private的,它默认的也是private的。
          枚举项的用法比较特殊:枚举("");
        7.枚举类也可以有抽象方法,但是枚举项必须重写该方法
    */

        //第二个特点的演示
        //我们可以通过"枚举类名.枚举项名称"去访问指定的枚举项
        System.out.println(Color.RED);
        System.out.println(Color.BLUE);
        System.out.println(Color.YELLOW);
        System.out.println(Color.ORANGE);
        System.out.println(Color.GREEN);
        //第三个特点的演示
        //每一个枚举项其实就是该枚举的一个对象
        Color yellow = Color.YELLOW;
        System.out.println(yellow);
    }
}

枚举的方法【应用】

  • 方法介绍

方法名

说明

String name()

获取枚举项的名称

int ordinal()

返回枚举项在枚举类中的索引值

int compareTo(E o)

比较两个枚举项,返回的是索引值的差值

String toString()

返回枚举常量的名称

static T valueOf(Class type,String name)

获取指定枚举类中的指定名称的枚举值

values()

获得所有的枚举项

  • 示例代码
package com.javaqian;

import com.sun.media.sound.SoftTuning;

public class EnumDemo1 {
    public static void main(String[] args) {
        //        String name() 获取枚举项的名称
        String name = Color.YELLOW.name();
        System.out.println(name);
        System.out.println("---------------------");
        //        int ordinal() 返回枚举项在枚举类中的索引值
        int ordinal = Color.YELLOW.ordinal();
        int ordinal1 = Color.GREEN.ordinal();
        System.out.println(ordinal);
        System.out.println(ordinal1);
        System.out.println("----------------------");
        //        int compareTo(E o) 比较两个枚举项,返回的是索引值的差值
        int i = Color.RED.compareTo(Color.BLUE);
        System.out.println(i);
        System.out.println("---------------------");
        //        String toString()   返回枚举常量的名称
        String string = Color.ORANGE.toString();
        System.out.println(string);
        System.out.println("-----------------------");
        //        static <T> T valueOf(Class<T> type,String name)
        //        获取指定枚举类中的指定名称的枚举值
        Color blue = Enum.valueOf(Color.class, "BLUE");
        System.out.println(blue);
        System.out.println(Color.BLUE==blue);
        System.out.println("------------------------");
        //        values()       获得所有的枚举项
        Color[] values = Color.values();
        for (Color value : values) {
            System.out.println(value);
        }
    }
}
  • 运行结果图

java 工单状态枚举_java