Java enum枚举

2021-09-06 10:07:38 浏览数 (1)

文章目录

    • 1. 枚举例子
    • 2. 接口的实现
    • 3. 枚举中定义抽象方法

enum 定义了枚举类型,其继承于 Enum 枚举类

1. 枚举例子

代码语言:javascript复制
import java.util.EnumMap;
import java.util.EnumSet;
import java.util.Iterator;
import java.util.Map;

class EnumDemo {
    public enum Color{
        RED, GREEN, BLUE
    }
    public static void main(String[] args){
        Color c = Color.RED;
        System.out.println(c);
        c = Color.GREEN;
        System.out.println(c);
        c = Color.BLUE;
        System.out.println(c);
		
		// 可用于 switch 
        switch(c){
            case RED:{
                System.out.println("红色");
                break;
            }
            case GREEN:{
                System.out.println("绿色");
                break;
            }
            case BLUE:{
                System.out.println("蓝色");
                break;
            }
            default:{
                System.out.println("nothing");
            }
        }
		
		// 
        for(Color col : Color.values())
            System.out.println(col.name()   "--->"   col.ordinal());
		// RED--->0
		// GREEN--->1
		// BLUE--->2

        // EnumMap
        EnumMap<Color, String> eMap = new EnumMap<Color, String>(Color.class);
        eMap.put(Color.RED, "红色");
        eMap.put(Color.GREEN, "绿色");
        eMap.put(Color.BLUE, "蓝色");
        for(Map.Entry<Color, String> me : eMap.entrySet()){
            System.out.println(me.getKey()   " : "   me.getValue());
        }
        // RED : 红色
		// GREEN : 绿色
		// BLUE : 蓝色

        // EnumSet
        EnumSet<Color> eSet = EnumSet.allOf(Color.class);//全部内容设置到集合
        Iterator<Color> iter = eSet.iterator();
        while(iter.hasNext()){
            System.out.println(iter.next());
        }
        // RED
		// GREEN
		// BLUE
    }
}
代码语言:javascript复制
enum Color{
    RED("红色"), GREEN("绿色"), BLUE("蓝色");
    private String name;
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
    Color (String name){ // 枚举的构造不能为 public
        this.setName(name);
    }
}
class test7{
    public static void main(String[] args) {
        for(Color col : Color.values()) {
            System.out.println(col.name()   "--->"   col.ordinal()   " "   col.getName());
        }
    }
}

输出:

代码语言:javascript复制
RED--->0 红色
GREEN--->1 绿色
BLUE--->2 蓝色

2. 接口的实现

  • 每个元素都要实现
代码语言:javascript复制
interface Info{
    public String getColor();
}
enum Color implements Info{
    RED{
        public String getColor(){
            return "红色";
        }
    },
    GREEN{
        public String getColor(){
            return "绿色";
        }
    },
    BLUE{
        public String getColor(){
            return "蓝色";
        }
    };
}
class test7{
    public static void main(String[] args) {
        for(Color col : Color.values()) {
            System.out.println(col.name()   "--->"   col.ordinal()   " "   col.getColor());
        }
    }
}

输出:

代码语言:javascript复制
RED--->0 红色
GREEN--->1 绿色
BLUE--->2 蓝色

3. 枚举中定义抽象方法

  • 每个元素都要实现抽象方法
代码语言:javascript复制
enum Color {
    RED{
        public String getColor(){
            return "红色";
        }
    },
    GREEN{
        public String getColor(){
            return "绿色";
        }
    },
    BLUE{
        public String getColor(){
            return "蓝色";
        }
    };
    public abstract String getColor();
}
class test7{
    public static void main(String[] args) {
        for(Color col : Color.values()) {
            System.out.println(col.name()   "--->"   col.ordinal()   " "   col.getColor());
        }
    }
}

0 人点赞