欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java面向对象编程5——枚举

程序员文章站 2022-06-03 23:51:47
...

Java面向对象编程5——枚举

1、枚举的概念

在日常生活中这些事物的取值只有明确的几个固定值,此时描述这些事 物的所有值都可以一一列举出来,而这个列举出来的类型就叫做枚举类型

2、枚举的定义

  • 使用public static final表示的常量描述较为繁琐,使用enum关键字来定 义枚举类型取代常量,枚举类型是从Java5开始增加的一种引用数据类型
  • 枚举值就是当前类的类型,也就是指向本类的对象,默认使用public static final关键字共同修饰,因此采用枚举类型.的方式调用
public enum Color {
    RED,
    BLUE,
    YELLOW
}

枚举类可以自定义构造方法,但是构造方法的修饰符必须是private,默认也是私有的

public enum Color {
    RED("红"),
    BLUE("蓝"),
    YELLOW("黄");
    private String introduce;

    public String getIntroduce() {
        return introduce;
    }
    private Color(String introduce){
        this.introduce = introduce;
    }
}
public class Test {
    public static void main(String[] args) {
        System.out.println(Color.RED.getIntroduce());
    }
}

带抽象方法的枚举类

public enum Color {
    RED("红"){
        @Override
        public String getIntroduce() {
            return "红";
        }
    },
    BLUE("蓝"){
        @Override
        public String getIntroduce() {
            return "蓝";
        }
    },
    YELLOW("黄"){
        @Override
        public String getIntroduce() {
            return "黄";
        }
    };
    private String introduce;

    public abstract String getIntroduce();
    private Color(String introduce){
        this.introduce = introduce;
    }
}
public class Test {
    public static void main(String[] args) {
        System.out.println(Color.BLUE.getIntroduce());
    }
}

3、枚举的常用方法

public enum Color {
    RED,
    BLUE,
    YELLOW
}
public class Test {
    public static void main(String[] args) {
        //返回枚举常量的名称
        System.out.println(Color.RED.name());
        //返回枚举常量的序号(下标从0开始)
        System.out.println(Color.RED.ordinal());
        //遍历枚举
        Color[] colors=Color.values();
        for (Color color : colors) {
            System.out.println(color.name());
        }
        // 使用 valueOf() 返回枚举常量,不存在的会报错 java.lang.IllegalArgumentException
        System.out.println(Color.valueOf("RED"));
        System.out.println(Color.valueOf("GRAY"));
    }
}
相关标签: ReJava java