枚举

 

枚举的注意事项

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;
    }
}

=============================================================================================ide

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());
    }
}
相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息