java枚举类知识整理

来源:互联网 发布:php语言好学吗 编辑:程序博客网 时间:2024/05/21 23:32

Java枚举类

一、枚举类的特性

  • 使用enum关键字定义枚举类,其默认继承Enum类,默认使用final修饰符:
    1、public enum EnumTest{}
    2、public final class EnumTest extends Enum{}
  • 枚举类构造器 默认只能 使用private访问控制符
  • 枚举类的所有实例必须在第一行显示列出,而且会默认添加public static final修饰。所有实例用逗号(,)隔开,用分号(;)结束

二、Enum类常用方法

  • int ordinal():返回枚举值在枚举类里面的声明的位置,即索引值
  • int compareTo(E o):枚举值之间的索引顺序比较
  • String name():返回枚举值的名称
  • String toString():返回枚举值的名称
  • valueOf(Class enumType, String name):感觉很鸡肋
    1、Gender gender = Enum.valueOf(Gender.class, "FEMALE")
    2、Gender gender = Gender.FEMALE
  • valueOf( String name):编译器插入,Enum类不能调用。
  • values():返回所有的枚举值。该方法是由编译器插入的。

示例代码:

enum MyEnum{    SPRING, SUMMER, FALL, WINTER;}public class EnumTest {    public static void main(String[] args){        System.out.println(MyEnum.SUMMER.ordinal());        System.out.println(MyEnum.WINTER.ordinal());   System.out.println(MyEnum.SUMMER.compareTo(MyEnum.WINTER));        System.out.println(MyEnum.SPRING.toString().equals("SPRING"));        System.out.println(MyEnum.FALL.name().equals("FALL"));        MyEnum myEnum = MyEnum.valueOf(MyEnum.class, "SPRING");        System.out.println(MyEnum.SPRING.equals(myEnum));        for (MyEnum myEnum1 : MyEnum.values()){            System.out.print(myEnum1.name() + " ");        }        System.out.println();           System.out.print(MyEnum.SPRING.equals(MyEnum.valueOf("SPRING")));    }}

输出结果:

13-2truetruetrueSPRING SUMMER FALL WINTER true

三、枚举类使用

1、带有抽象方法的枚举类:实现具有不同行为的枚举常量

public enum Operation {    PLUS{        public double calculate(double x, double y){            return x + y;        }    },    MINUS{        public double calculate(double x, double y){            return x - y;        }    };    public abstract double calculate(double x, double y);    public static void main(String[] args){        System.out.println(Operation.PLUS.calculate(1, 2));    }}

2、实现接口的枚举类:在枚举值里面实现接口方法,或者在枚举类中实现接口方法
3、用在switch语句里面:因为枚举值天生具有整形值的次序。
4、EnumSet与EnumMap:EnumSet是Java SE5引进的,用来代替传统的基于int的“位标志”;EnumMap代替序数索引。

原创粉丝点击