Enum介绍
public enum Color {
RED, YELLOW, BLUE;
}
说明:
使用的是enum关键字而不是class
多个枚举变量之间用 逗号 隔开
枚举变量名大写,多个单词之间用 _ 隔开。 如。 ALL_NUM...
定义完枚举变量后, 用分号 结束。如果只有枚举变量,而没有自定义变量,分号可以省略。
使用 只需要【类名.变量名】就可以了,和使用静态变量一样。
方法
values()
这个方法会返回包括所有枚举变量的数组
for (Color color : Color.values()) {
// 下标
System.out.println(color.ordinal());
// 枚举变量名字
System.out.println(color.name());
// 同上
System.out.println(color.toString());
}
// 比较的是下标
System.out.println(Color.valueOf("YELLOW").compareTo(Color.valueOf("BLUE")));
valueOf(String name)
它的作用是传来一个字符串,然后将它转变为对应的枚举变量 .
字符串和定义枚举变量的字符串必须一样,并且区分大小写。如果不存在会抛出异常。java.lang.IllegalArgumentException
public enum Weekday {
MON(1),TUS(2),WED(3),THU(4),FRI(5),SAT(6),SUN(0);
private int index;
private Weekday(int index){
this.index = index;
}
}
说明
定义的枚举变量 必须 在第一行。以 分号结束。
构造函数只能是 private 的。否则 编译不通过
自定义的 index 和 下标 不冲突。
枚举类中的抽象类
实例:
public enum Color {
RED() {
@Override
public Color getNextColor() {
return YELLOW;
}
},
YELLOW(){
@Override
public Color getNextColor() {
return BLUE;
}
},
BLUE(){
@Override
public Color getNextColor() {
return RED;
}
};
/**
* 获取下一种颜色
* @return
*/
public abstract Color getNextColor();
}
Color yellow = Color.valueOf("YELLOW");
System.out.println(yellow.getNextColor());
// BLUE
枚举类的原理:
public enum Weekday {
MON(1),TUS(2),WED(3),THU(4),FRI(5),SAT(6),SUN(0);
private int index;
private Weekday(int index){
this.index = index;
}
}
javap 反编译 Weekday.class
public final class enums.Weekday extends java.lang.Enum<enums.Weekday> {
public static final enums.Weekday MON;
public static final enums.Weekday TUS;
public static final enums.Weekday WED;
public static final enums.Weekday THU;
public static final enums.Weekday FRI;
public static final enums.Weekday SAT;
public static final enums.Weekday SUN;
public static enums.Weekday[] values();
public static enums.Weekday valueOf(java.lang.String);
static {};
}
是 final 类,不能被继承。
继承了 java.lang.Enum 类。只能实现接口了。
在Color枚举类中定义的 RED、、、本身是一个 Color对象的引用。Color RED = new Color();
使用匿名内部类方式:
Color RED = new Color() {
@override
public Color getNextColor() {
return YELLOW;
}
}
在枚举类中 只用写 RED(){...} JVM会完成其它操作
枚举类在switch中应用
switch (color) {
case RED:
color = Color.GREEN;
break;
case YELLOW:
color = Color.RED;
break;
case GREEN:
color = Color.YELLOW;
break;
}
枚举类实现接口
public interface Behaviour {
void print();
String getInfo();
}
public enum Weekday implements Behaviour{
MON(1),TUS(2),WED(3),THU(4),FRI(5),SAT(6),SUN(0);
private int index;
Weekday(int index){
this.index = index;
}
@Override
public void print() {
System.out.println(this.index + ":" + toString());
}
@Override
public String getInfo() {
return toString();
}
}
枚举实现 单例模式
public enum DataSourceEnum {
DATASOURCE;
private DBConnection connection = null;
private DataSourceEnum() {
connection = new DBConnection();
}
public DBConnection getConnection() {
return connection;
}
}
Enum介绍的更多相关文章
- protobuf 的enum与string转换
c/c++ enum 介绍 说起c/c++ 的enum,比起python 真的是方便简洁 enum type{ type1 = 0, type2 } enum的元素对应的int 默认从0 开始依次增加 ...
- 第11课 - enum, sizeof, typedef 分析
第11课 - enum, sizeof, typedef 分析 1. enum介绍 (1)enum是C语言中的一种自定义类型,和struct.union地位相同,格式如下: // enum每个值的最后 ...
- Java 语言中 Enum 类型的使用介绍
Enum 类型的介绍 枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中.而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常 ...
- Java 语言中 Enum 类型的使用介绍【转载】
简介:本文主要介绍了 Java 语言中枚举类型,以及如何定制 Enum 类型的定义,如何正确使用 Enum 类型. From:http://www.ibm.com/developerworks/cn/ ...
- mysql中set和enum使用(简单介绍)
简单介绍 SET类型 在创建表时,就指定SET类型的取值范围. 属性名 SET('值1','值2','值3'...,'值n') 其中,“属性名”参数指字段的名称:“值n”参数表示列表中的第n个值,这些 ...
- Java中的Enum(枚举)用法介绍
1. 关于Java Enum:学过C/C++等语言的人,应该都对Enum类型略知一二.Enum一般用来表示一组相同类型的常量.如性别.日期.月份.颜色等.对这些属性用常量的好处是显而易见的,不仅可以保 ...
- 免费高效实用的.NET操作Excel组件NPOI(.NET组件介绍之六)
很多的软件项目几乎都包含着对文档的操作,前面已经介绍过两款操作文档的组件,现在介绍一款文档操作的组件NPOI. NPOI可以生成没有安装在您的服务器上的Microsoft Office套件的Excel ...
- 免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
在生活中有一种东西几乎已经快要成为我们的另一个电子”身份证“,那就是二维码.无论是在软件开发的过程中,还是在普通用户的日常中,几乎都离不开二维码.二维码 (dimensional barcode) , ...
- 高效而稳定的企业级.NET Office 组件Spire(.NET组件介绍之二)
在项目开发中,尤其是企业的业务系统中,对文档的操作是非常多的,有时几乎给人一种错觉的是”这个系统似乎就是专门操作文档的“.毕竟现在的很多办公中大都是在PC端操作文档等软件,在这些庞大而繁重的业务中,单 ...
随机推荐
- [android] socket在手机上的应用
1.手机助手 1.1 USB链接 可以读取手机的PID和VID,确定唯一的设备,可以给手机安装对应的驱动等 socket在固定端口通信 1.2 WIFI链接 pc在电脑在整个网段发送UDP数据包,手机 ...
- 前端小结(4)---- 页面加载loding....
/*正在加载*/ function showLoading(elem) { var html = '<div class="loading"><div id=&q ...
- json_decode($json, true) true什么意思
<?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}' ...
- Git 命令 操作
常用 Git 命令清单 我每天使用 Git ,但是很多命令记不住.一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单. ...
- arcgis silverlight api 图层介绍
Layer |--TiledMapServiceLayer | |--ArcGISTiledMapServiceLayer |--DynamicLayer | |--DynamicMapService ...
- Linux Firefox Adobe Flash Player 安装和更新
1.下载 Firefox Adobe Flash Player 使用Linux上的火狐浏览器访问如下的下载网址: https://get.adobe.com/flashplayer/ 选择下载 &qu ...
- 从Microsoft SQL Server迁移到MySQL指南
转自 https://www.mysql.com/why-mysql/white-papers/sql-server-to-mysql-zh/ 由于 MySQL 将节约成本.自由选择平台.特性丰富等优 ...
- css properties
white-space:描述如何处理元素中的空格 word-wrap:(以单词为单位,比如长单词则转行拆分,短单词则直接留空换行!) 用来说明当一个不能被分开的字符串太长因而其containing b ...
- mongodb数据库索引管理
1:ensureIndex() 方法 MongoDB使用 ensureIndex() 方法来创建索引. 语法 ensureIndex()方法基本语法格式如下所示: }) 语法中 Key 值为你要创建的 ...
- QT网络编程Tcp下C/S架构的即时通信
先写一个客户端,实现简单的,能加入聊天,以及加入服务器的界面. #ifndef TCPCLIENT_H #define TCPCLIENT_H #include <QDialog> #in ...