1 定义一个枚举

enum Weekend {
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}

2 得到每个枚举值

 for (Weekend weekend : Weekend.values())

3 返回枚举在集合中顺序(从0开始)

public final int ordinal() {
    return ordinal;
}

4 当前枚举名字

public final String name() {
    return name;
}

5 根据名字返回相应的enum实例

public static <T extends Enum<T>> T valueOf(Class<T> enumType,
                                            String name) {
    T result = enumType.enumConstantDirectory().get(name);
    if (result != null)
        return result;
    if (name == null)
        throw new NullPointerException("Name is null");
    throw new IllegalArgumentException(
        "No enum constant " + enumType.getCanonicalName() + "." + name);
}

6 枚举不能被继承(下面的代码报错,提示不能从final的test.Weekday继承)

enum WeekendSon extends Weekend {

}

7 定义enum构造函数

enum Step {  // Instances must be defined first, before methods:
    First("this is the first step"),
    Second("this is the second step"),
    Third("this is the third step"),
    Fourth("this is the fourth step");

    private String description;

    public String getDescription() {
        return description;
    }

    Step(String description) {
        this.description = description;
    }
}

public class AppTest {
    public static void main(String[] args) {
        for (Step step : Step.values()) {
            System.out.println(step + ":" + step.getDescription());
        }
    }
}

输出结果:

First:this is the first step
Second:this is the second step
Third:this is the third step
Fourth:this is the fourth step

8 实例一枚
State接口:

public interface State {
    int getCode();
    String getDesc();
    State nameOf(String var1);
}

LifeState枚举:

public enum LifeState implements State {
    babyState(0, "儿童状态"),
    youngState(1, "年轻状态"),
    adultState(2, "成年状态"),
    oldState(3, "老年状态");

    private int code;
    private String desc;

    private LifeState(int code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    @Override
    public int getCode() {
        return this.code;
    }

    @Override
    public String getDesc() {
        return this.desc;
    }

    @Override
    public State nameOf(String name) {
        return valueOf(name);
    }

    public static LifeState codeOf(int code) {
        LifeState[] arr = values();

        for(int i = 0; i < arr.length; i++) {
            if(arr[i].code == code) {
                return arr[i];
            }
        }
        return null;
    }
}

Test测试类:

public class Test {
    public static void main(String[] args) {
        LifeState lifeState = LifeState.babyState;
        System.out.println(lifeState + "---" + lifeState.getCode() + "---" + lifeState.getDesc());
        State babyState = lifeState.nameOf("youngState");  //调用valueOf,返回相应的枚举实例
        System.out.println(babyState + "---" + babyState.getCode() + "---" + babyState.getDesc());

        System.out.println(LifeState.codeOf(3).getDesc());

        System.out.println(LifeState.youngState.name());
    }
}

运行结果:

babyState---0---儿童状态
youngState---1---年轻状态
老年状态
youngState

Enum 枚举基础的更多相关文章

  1. 1.0 基础、标示符、常量、数据类型(enum 枚举,struct 结构体)、操作符、循环、数组

    一.程序 现实生活中,程序是指完成某些事务的一种既定方法和过程,可以把程序看成是一系列动作执行过程的描述. 在计算机世界,程序是指令,即为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集 ...

  2. Swift Enum 枚举

    前言 枚举是一种自定义的数据类型,在 Swift 中枚举类型拥有相当高的自由度.在 Swift 语言中枚举是一级类型,它拥有在其他语言中只有类才拥有的一些特性,比如实例方法,实例构造器等. 枚举声明的 ...

  3. JDK源码学习笔记——Enum枚举使用及原理

    一.为什么使用枚举 什么时候应该使用枚举呢?每当需要一组固定的常量的时候,如一周的天数.一年四季等.或者是在我们编译前就知道其包含的所有值的集合. 利用 public final static 完全可 ...

  4. Enum 枚举类

    目录 Enum 枚举类 基础 定义与用途 基本方法 示例 进阶 实现原理 枚举与Class对象 自定义枚举类和构造方法及toString() Enum中使用抽象方法来实现枚举实例的多态性 Enum与接 ...

  5. .net框架 - Enum枚举

    概要 在C#或C++,java等一些计算机编程语言中,枚举类型是一种基本数据类型而不是构造数据类型. 在C语言等计算机编程语言中,它是一种构造数据类型. 它用于声明一组命名的常数,当一个变量有几种可能 ...

  6. c# (ENUM)枚举组合类型的谷歌序列化Protobuf

    c# (ENUM)枚举组合类型的谷歌序列化Protobuf,必须在序列化/反序列化时加上下面: RuntimeTypeModel.Default[typeof(Alarm)].EnumPassthru ...

  7. C#将Enum枚举映射到文本字符串

    介绍 当将以前的C代码移植到C#中时,我快发疯了,因为有很多的数组需要将常量映射到字符串.当我在寻找一个C#的方法来完成的时候,我发现了一个自定义属性和映射的方法. 如何使用代码? 对每一个enum枚 ...

  8. MVC3不能正确识别JSON中的Enum枚举值

    一.背景 在MVC3项目里,如果Action的参数中有Enum枚举作为对象属性的话,使用POST方法提交过来的JSON数据中的枚举值却无法正确被识别对应的枚举值. 二.Demo演示 为了说明问题,我使 ...

  9. 161208、Java enum 枚举还可以这么用

    在大部分编程语言中,枚举类型都会是一种常用而又必不可少的数据类型,Java中当然也不会例外.然而,Java中的Enum枚举类型却有着许多你意想不到的用法,下面让我们一起来看看. 先来看一段代码示例: ...

随机推荐

  1. PHP常用代码大全(新手入门必备)

    PHP常用代码大全(新手入门必备),都是一些开发中常用的基础.需要的朋友可以参考下.   1.连接MYSQL数据库代码 <?php $connec=mysql_connect("loc ...

  2. linshi_temp_erweima_html

    <!doctype html><html><head><meta charset="utf-8"><meta content= ...

  3. 查看,添加和删除GIT配置的正确姿势

    查看GIT所有配置的命令: git config --list 查看GIT全局配置的命令: git config --global --list 添加GIT全局配置(HTTPS代理) git conf ...

  4. HUST 1339 Reversal(字符串)

    题目链接 题解:将每个单词倒置,可以用char数组,然后用空格分隔,这里用的是string和stringstream. #include <cstdio> #include <ios ...

  5. Java 散知识

    1.final关键字的用法: 1. final关键字修饰一个基本类型的变量时,该变量不能重新赋值,第一次的值为最终的. 2. fianl关键字修饰一个引用类型变量时,该变量不能重新指向新的对象. 3. ...

  6. python读取bin文件并下发串口

    # coding:utf-8import time, serialfrom struct import *import binascii file = open('E:\\1.bin', 'rb')i ...

  7. 批量去除office超链接

    mac下: fn+shift+comman+F9 windows下:control+shift+F9

  8. 模拟SPI协议时序

    SPI是串行外设接口总线,摩托罗拉公司开发的一种全双工,同步通信总线,有四线制和三线制. 在单片机系统应用中,单片机常常是被用来当做主机(MASTER),外围器件被当做从机(SLAVE). 所以,在以 ...

  9. __doPostBack初识

    周五在公司看到有看到Request.Params["__EVENTARGUMENT"]的代码不解,不解遂上网查找,发现一篇文章<Understanding the JavaS ...

  10. mybatis 一点整理

    mapper指定对应的接口 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper ...