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枚举类型却有着许多你意想不到的用法,下面让我们一起来看看. 先来看一段代码示例: ...
随机推荐
- ASP.NET Page执行顺序
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...
- Token验证失败的解决方法
Token验证失败 微信 微信公众平台开发 Token校验失败 URL Token原文 http://www.cnblogs.com/txw1958/p/token-verify.html Token ...
- openwrt启动过程(脚本)
来源: http://wiki.openwrt.org/doc/techref/preinit_mount#first.boot 基本的openwrt启动顺序为: 1.boot loader loa ...
- ActiveMQ in Action(5) - Clustering
关键字: activemq 2.5 Clustering ActiveMQ从多种不同的方面提供了集群的支持.2.5.1 Queue consumer clusters ActiveMQ支持 ...
- Openjudge-计算概论(A)-骑车与走路
描述: 在北大校园里,没有自行车,上课办事会很不方便.但实际上,并非去办任何事情都是骑车快,因为骑车总要找车.开锁.停车.锁车等,这要耽误一些时间.假设找到自行车,开锁并车上自行车的时间为27秒;停车 ...
- python--sum函数--sum(axis=1)
平时用的sum应该是默认的axis=0 就是普通的相加,当加入axis=1以后就是将一个矩阵的每一行向量相加. 例如: >>>import numpy as np >>& ...
- 第四题 (List)写一个函数reverseList,该函数能够接受一个List,然后把该List 倒序排列。 例如: List list = new ArrayList(); list.add(“Hello”); list.add(“World”); list.add(“Learn”); //此时list 为Hello World Learn r
package zuoye; import java.util.ArrayList; import java.util.List; public class Reverse01 { public st ...
- Microsoft SqlSever 数据库--软谋1
百度百科--Microsoft SqlSever SQL是英文Structured Query Language的缩写,意思为结构化查询语言.SQL语言的主要功能就是同各种数据库建立联系,进行沟通.按 ...
- 艰辛五天:Ubuntu14.04+显卡驱动+cuda+Theano环境安装过程
题记:从一开始不知道显卡就是GPU(虽然是学计算机的,但是我真的不知道…脑残如我也是醉了),到搞好所有这些环境前后弄了5天时间,前面的买显卡.装显卡和装双系统见另一篇博客装显卡.双系统,这篇主要记录我 ...
- android 实践项目
电子词典 http://files.cnblogs.com/blogLYF/lyf_danci.apk