枚举

十年热恋 提交于 2019-11-30 06:31:23

 

枚举的注意事项

1 定义枚举类要用关键字enum

       2 所有枚举类都是Enum的子类

       3 枚举类的第一行上必须是枚举项, 最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西, 这个分号就不能省略。 建议不要省略

       4 枚举类可以有构造器, 但必须是private, 它默认的也是private

       5 枚举类也可以有抽象方法,但是枚举项必须重写该方法

       6 枚举在switch语句中的使用
public enum Direction {
    FRONT,BEHIND,LEFT,RIGHT;
}
public enum Direction2 {
    FRONT("前"), BEHIND("后"), LEFT("左"), RIGHT("右");
    private String name;

    Direction2(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }


}
public enum Direction3 {
    FRONT("前") {
        @Override
        public void show() {
            System.out.println("前");
        }
    },
    BEHIND("后") {
        @Override
        public void show() {
            System.out.println("后");
        }
    }, LEFT("左") {
        @Override
        public void show() {
            System.out.println("左");
        }
    }, RIGHT("右") {
        @Override
        public void show() {
            System.out.println("右");
        }
    };
    private String name;

    private Direction3(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public abstract void show();

}
public static void main(String[] args) {
    Direction d = Direction.FRONT;
    // FRONT
    System.out.println(d);
    //public String toString();返回枚举常量的名称,它包含在声明中
    System.out.println("--------------");
    Direction2 d2 = Direction2.FRONT;
    // FRONT
    System.out.println(d2);
    // 前
    System.out.println(d2.getName());
    System.out.println("-------------------");
    Direction3 d3 = Direction3.FRONT;
    // FRONT
    System.out.println(d3);
    // 前
    System.out.println(d3.getName());
    // 前
    d3.show();
    System.out.println("=-=-----------------");
    Direction3 dd = Direction3.LEFT;

    switch (dd) {
        case FRONT:
            System.out.println("前");
            break;
        case BEHIND:
            System.out.println("后");
            break;
        case LEFT:
            System.out.println("左");
            break;
        case RIGHT:
            System.out.println("右");
            break;
    }
}

=============================================================================================

public enum Direction2 {
    FRONT("前"), BEHIND("后"), LEFT("左"), RIGHT("右");
    private String name;

    Direction2(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }


}
public static void main(String[] args) {
    //public final int compareTo(E o)比较此枚举与指定对象的顺序。
    Direction2 d21 = Direction2.FRONT;
    Direction2 d22 = Direction2.BEHIND;
    Direction2 d23 = Direction2.LEFT;
    Direction2 d24 = Direction2.RIGHT;
    // 0
    System.out.println(d21.compareTo(d21));
    // -3
    System.out.println(d21.compareTo(d24));
    // 3
    System.out.println(d24.compareTo(d21));
    System.out.println("--------------");
    //public final String name()返回此枚举常量的名称,在其枚举声明中对其进行声明
    // FRONT
    System.out.println(d21.name());
    // BEHIND
    System.out.println(d22.name());
    // LEFT
    System.out.println(d23.name());
    // RIGHT
    System.out.println(d24.name());
    System.out.println("-------------");
    //public final int ordinal()返回枚举常量的序数
    // 0
    System.out.println(d21.ordinal());
    // 1
    System.out.println(d22.ordinal());
    // 2
    System.out.println(d23.ordinal());
    // 3
    System.out.println(d24.ordinal());
    System.out.println("-------------------");
    //public String toString()返回枚举常量的名称,它包含在声明中
    //可以重写此方法
    // FRONT
    System.out.println(d21.toString());
    // BEHIND
    System.out.println(d22.toString());
    // LEFT
    System.out.println(d23.toString());
    // RIGHT
    System.out.println(d24.toString());
    System.out.println("------------");
    //public static <T extends Enum<T>> T valueOf(Class<T> enumType,
    //String name)返回带指定名称的指定枚举类型的枚举常量
    Direction2 dd = Enum.valueOf(Direction2.class, "FRONT");
    // 前
    System.out.println(dd.getName());
    System.out.println("-------------");
    //values()此方法虽然在JDK文档中查找不到,单每个枚举类都具有该方法
    //它遍历枚举类的所有枚举值非常方便
    Direction2[] direction2s = Direction2.values();
    for (Direction2 d2 : direction2s) {
        /*FRONT
                前
        BEHIND
                后
        LEFT
                左
        RIGHT
                右*/
        System.out.println(d2);
        System.out.println(d2.getName());
    }
}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!