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. 【Sort】插入排序

    今晚更新几个排序算法 插入排序,时间复杂度O(n^2),从前往后遍历,每遍历到一个值的时候,其前面的所有值已经完成排序,把这个值插入适当位置 void intersort(int *nums,int ...

  2. @Transactional注解详解

    默认遇到throw new RuntimeException("...");会回滚   需要捕获的throw new Exception("...");不会回滚 ...

  3. 有关下行HARQ的一切

    1. 对于下行HARQ,有几种类型的下行传输需要UE反馈ACK/NACK 动态调度的下行传输:UE收到一个使用C-RNTI或TC-RNTI(对应随机接入过程中的Msg4)加扰的PDCCH和PDSCH, ...

  4. jquery-ui-multiselect 的使用

    @model Gd.NetSign.Controllers.DTO.WsaleFundManageDTO @{ ViewBag.Title = "ShowDUYUN"; //Lay ...

  5. erlang套接字

    Erlang的套接字可以有三种打开模式:主动(active).单次主动(active once)或被动(passive).这是通过在gen_tcp:connect(Address, Port, Opt ...

  6. csv格式导出文件

    先上传连个图片看看效果,这是界面效果dwz框架(springmvc开发) 点击导出csv效果图 js部分的代码(带条件查询的csv导出): function exportReportCsv(){ ex ...

  7. 让人头疼的CSS兼容

    先说点Hack的知识(真正的高手是不用Hack的,但要成为高手必须通过Hack这一关) /* CSS属性级Hack */ color:red; /* 所有浏览器可识别*/ _color:red; /* ...

  8. YaHoo Web优化的14条法则

    Web应用性能优化黄金法则:先优化前端程序(front-end)的性能,因为这是80%或以上的最终用户响应时间的花费所在. 法则1. 减少HTTP请求次数 80%的最终用户响应时间花在前端程序上,而其 ...

  9. js 总结累计大全

    1选择  select  获取val text   更改其他class值 <script type="text/javascript"> $(function(){ $ ...

  10. C# 读取二进制文件

    using UnityEngine; using System.Collections; using System; using System.IO; public class Test : Mono ...