Enum 枚举基础
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.0 基础、标示符、常量、数据类型(enum 枚举,struct 结构体)、操作符、循环、数组
一.程序 现实生活中,程序是指完成某些事务的一种既定方法和过程,可以把程序看成是一系列动作执行过程的描述. 在计算机世界,程序是指令,即为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集 ...
- Swift Enum 枚举
前言 枚举是一种自定义的数据类型,在 Swift 中枚举类型拥有相当高的自由度.在 Swift 语言中枚举是一级类型,它拥有在其他语言中只有类才拥有的一些特性,比如实例方法,实例构造器等. 枚举声明的 ...
- JDK源码学习笔记——Enum枚举使用及原理
一.为什么使用枚举 什么时候应该使用枚举呢?每当需要一组固定的常量的时候,如一周的天数.一年四季等.或者是在我们编译前就知道其包含的所有值的集合. 利用 public final static 完全可 ...
- Enum 枚举类
目录 Enum 枚举类 基础 定义与用途 基本方法 示例 进阶 实现原理 枚举与Class对象 自定义枚举类和构造方法及toString() Enum中使用抽象方法来实现枚举实例的多态性 Enum与接 ...
- .net框架 - Enum枚举
概要 在C#或C++,java等一些计算机编程语言中,枚举类型是一种基本数据类型而不是构造数据类型. 在C语言等计算机编程语言中,它是一种构造数据类型. 它用于声明一组命名的常数,当一个变量有几种可能 ...
- c# (ENUM)枚举组合类型的谷歌序列化Protobuf
c# (ENUM)枚举组合类型的谷歌序列化Protobuf,必须在序列化/反序列化时加上下面: RuntimeTypeModel.Default[typeof(Alarm)].EnumPassthru ...
- C#将Enum枚举映射到文本字符串
介绍 当将以前的C代码移植到C#中时,我快发疯了,因为有很多的数组需要将常量映射到字符串.当我在寻找一个C#的方法来完成的时候,我发现了一个自定义属性和映射的方法. 如何使用代码? 对每一个enum枚 ...
- MVC3不能正确识别JSON中的Enum枚举值
一.背景 在MVC3项目里,如果Action的参数中有Enum枚举作为对象属性的话,使用POST方法提交过来的JSON数据中的枚举值却无法正确被识别对应的枚举值. 二.Demo演示 为了说明问题,我使 ...
- 161208、Java enum 枚举还可以这么用
在大部分编程语言中,枚举类型都会是一种常用而又必不可少的数据类型,Java中当然也不会例外.然而,Java中的Enum枚举类型却有着许多你意想不到的用法,下面让我们一起来看看. 先来看一段代码示例: ...
随机推荐
- jQuery第五章
jQuery对表单.表格的操作以及更多应用 一.表单应用 1.单行文本框应用 (1)获取和失去焦点改变样式 HTML代码如下: <form action="#" method ...
- js返回上一页并刷新代码整理
一:JS 重载页面,本地刷新,返回上一页 复制代码 代码如下: <a href="javascript:history.go(-1)">返回上一页</a> ...
- bzoj2052: Pku1777 Vivian
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2052 2052: Pku1777 Vivian Time Limit: 10 Sec M ...
- Java JVM 类的连接与初始化 [ 转载 ]
Java类的连接与初始化 (及2013阿里初始化笔试题解析) 转自http://www.cnblogs.com/iceAeterNa/p/4876747.html Java虚拟机通过 ...
- 安卓访问webAPI,并取回数据
前言 安卓自从4.0以后,所有的网络访问都需要异步进程操作.其自带的异步类有AsyncTask,Handler,以及可以声明Thread等等.涉及到多进程,必须要提到一个问题,线程与线程之间不能直接进 ...
- txt文件的读取
两个函数:textread或importdata [textread函数] 格式:I=textread('文件名.txt','列',读取的行数,'headerlines',跳过的头行数); 返回值I ...
- aspnet5安装ef7备忘
1.安装kvm 首先,你需要以管理员权限打开cmd,执行如下的脚本: @powershell -NoProfile -ExecutionPolicy unrestricted -Command &qu ...
- POJ 2083 Fractal 分形
去年校赛团队赛就有一道分形让所有大一新生欲生欲死…… 当时就想学了 结果一直拖到…… 今天上午…… 马上要省选了 才会一点基础分形…… 还是自己不够努力啊…… 分形主要是要找到递归点…… 还有深度…… ...
- jquery-ui-multiselect 的使用
@model Gd.NetSign.Controllers.DTO.WsaleFundManageDTO @{ ViewBag.Title = "ShowDUYUN"; //Lay ...
- mnesia
1.模式创建 mnesia:create_schema([node()|nodes()]).集群的节点之间创建模式 2.启动和停止 application:start(mnesia). applica ...