美文网首页
枚举详解

枚举详解

作者: 二狗不是狗 | 来源:发表于2020-02-28 21:02 被阅读0次

一.实现原理

public enum Season {
    SPRING, SUMMER, AUTUMN, WINTER
}

System.out.println("spring name:" + Season.SUMMER.name());
System.out.println("spring ordinal:" + Season.SUMMER.ordinal());

System.out.println("spring values:" + JSON.toJSONString(Season.values()));
System.out.println("spring valueOf:" + Season.valueOf("SPRING"));

上面代码打印结果如下:
spring name:SUMMER
spring ordinal:1
spring values:["SPRING","SUMMER","AUTUMN","WINTER"]
spring valueOf:SPRING

image.png
  1. Java自动给枚举值按照枚举值出现的顺序,从0开始分配了编号。通过name()可以获得枚举值的名称,通过ordinal()可以获得枚举值的编号。
  2. 枚举类在经过编译后确实是生成了一个扩展了java.lang.Enum的类
  3. 枚举类是final的,因此我们无法再继承它了
  4. 我们定义的每个枚举值都是该类中的一个成员,且成员的类型仍然是Season类型
  5. 枚举类中被默认增加了许多静态方法,例如values()、valueOf()等

二.高阶使用

public enum Color {
    RED("红色", 1),
    GREEN("绿色", 2),
    BLANK("白色", 3),
    YELLO("黄色", 4);

    private String name;
    private int index;

    Color(String name, int index) {
        this.name = name;
        this.index = index;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getIndex() {
        return index;
    }
    public void setIndex(int index) {
        this.index = index;
    }

    public static Color getColor(int index) {
        for (Color color : Color.values()) {
            if (color.getIndex() == index) {
                return color;
            }
        }
        return null;
    }
}
System.out.println("color name:" + Color.RED.name());
System.out.println("color ordinal:" + Color.RED.ordinal());
System.out.println("color values:" + JSON.toJSONString(Color.values()));
System.out.println("color valueOf:" + Color.valueOf("RED"));

System.out.println(Color.getColor(2));
Color.BLANK.setName("blank");
System.out.println(Color.BLANK.getName());
System.out.println(Color.BLANK.getIndex());

输出
color name:RED
color ordinal:0
color values:["RED","GREEN","BLANK","YELLO"]
color valueOf:RED

GREEN
blank
3

相关文章

  • 枚举详解

    一.实现原理 上面代码打印结果如下:spring name:SUMMERspring ordinal:1sprin...

  • Java枚举总结

    Java枚举总结 枚举类型比较简单,下面两个文章讲的比较清楚: Java 枚举(enum) 详解7种常见的用法 深...

  • Swift 枚举(enum)详解

    Swift 枚举(enum)详解 [TOC] 本文将介绍Swift中枚举的一些用法和其底层原理的一些探索,以及探索...

  • Java 枚举(enum) 详解7种常见的用法

    Java 枚举(enum) 详解7种常见的用法 用法一:常量 publicenumColor{ RED,GREEN...

  • java 枚举详解

    1. 概述 枚举(enum)全写为的全称为:enumeration。是jdk1.5才新引进的概念,在Java中en...

  • Java枚举详解

    enum修饰的类默认继承了Enum类,默认被static final修饰。因为Java不支持多继承,故枚举类不能继...

  • Java枚举详解

    概念 enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性。 在Java中,被 en...

  • Java 枚举详解

    1. 枚举基本特征 关键词enum可以将一组具名值的有限集合创建成一种新的类型,而这些具名的值可以作为常规程序组件...

  • Swift枚举详解

    和结构体一样,swift中的枚举也是值类型。除了定义一个或多个case成员,还可以做以下事情: 可以定义方法,计算...

  • 还在用枚举?我早就抛弃了!(Android 注解详解)

    还在用枚举?我早就抛弃了!(Android 注解详解) 前言:使用Support Annotations注解优化代...

网友评论

      本文标题:枚举详解

      本文链接:https://www.haomeiwen.com/subject/fzurhhtx.html