java基础:枚举

枚举
  • 枚举是java中的一种类型,用enum来定义。
  • 通常用来组织一系列常量,比如人类的性别分为male, female。
  • 枚举继承于java.lang.Enum类,默认修饰符为 public static final,所以不能被继承;也不能再继承其他类,但是可以实现接口。
例1
// 编译后自动变为 public final class Color extends Enum
public enum SimpleEnumInstance {
    MALE, FEMALE; //这两个值就是 SimpleEnumInstance 的实例

    public static void main(String[] args) {
        System.out.println(MALE);
        System.out.println(FEMALE);

        SimpleEnumInstance gender = SimpleEnumInstance.valueOf("MALE");
        if (MALE == gender) {
            System.out.println("i am MALE");
        }

        if (MALE.equals(gender)) { // 比较两个引用值是否相等
            System.out.println("i am MALE");
        }

        // SimpleEnumInstance.values() 以数组形式返回所有成员
        for (SimpleEnumInstance enumInstance : SimpleEnumInstance.values()) {
            //enumInstance.ordinal() 返回枚举的位置或索引
            //enumInstance.name()获取枚举的String, 该值就是枚举成员的的名字
            //enumInstance.compareTo(FEMALE) 比较这两个枚举值,结果为两个枚举值index的差
            System.out.println(enumInstance + ": index is " + enumInstance.ordinal());
            System.out.println(enumInstance.name());
            System.out.println(enumInstance.compareTo(FEMALE));
        }
    }
}

运行结果
java基础:枚举_第1张图片

枚举实现接口

接口

public interface ColorParentInterface {
    String getDescription();
}

实现接口

//public enum Color extends ColorParent { 不能继承其他类
public enum Color implements ColorParentInterface { // 可以实现接口
    RED(1L, "red"), YELLOW(2L, "yellow"), BULU(3L, "blue");

    private final Long index;
    private final String alias;

    private Color(Long index, String alias) {
        this.index = index;
        this.alias = alias;
    }

    public Long getIndex() {
        return index;
    }

    public String getAlias() {
        return alias;
    }

    @Override
    public String toString() {
        return this.getAlias() + ": " + this.index;
    }

    @Override
    public String getDescription() {
        return "i implemented ColorParentInterface";
    }

    public static void main(String[] args) {
        System.out.println(RED); // 不重写toString()打印的仍是枚举实例的名字
        System.out.println(RED.ordinal());
        System.out.println(RED.getDescription());
    }
}

运行结果
java基础:枚举_第2张图片

你可能感兴趣的:(java基础,java)