前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java enum枚举

Java enum枚举

作者头像
Michael阿明
发布2021-09-06 10:07:38
7780
发布2021-09-06 10:07:38
举报
文章被收录于专栏:Michael阿明学习之路

文章目录

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());
        }
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 1. 枚举例子
  • 2. 接口的实现
  • 3. 枚举中定义抽象方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档