DK1.5引入了新的类型——枚举。在
Java
中它虽然算个“小”功能,却给我的开发带来了“大”方便。
用法一:常量
在JDK1.5
之前,我们定义常量都是:
publicstaticfianl....
。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。
-
public
enum
Color {
-
RED, GREEN, BLANK, YELLOW
-
}
用法二:switch
JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。
-
enum
Signal {
-
GREEN, YELLOW, RED
-
}
-
public
class
TrafficLight {
-
Signal color = Signal.RED;
-
public
void
change() {
-
switch
(color) {
-
case
RED:
-
color = Signal.GREEN;
-
break
;
-
case
YELLOW:
-
color = Signal.RED;
-
break
;
-
case
GREEN:
-
color = Signal.YELLOW;
-
break
;
-
}
-
}
-
}
用法三:向枚举中添加新方法
如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且
Java
要求必须先定义
enum
实例。
-
public
enum
Color {
-
RED("红色"
,
1
), GREEN(
"绿色"
,
2
), BLANK(
"白色"
,
3
), YELLO(
"黄色"
,
4
);
-
-
private
String name;
-
private
int
index;
-
-
private
Color(String name,
int
index) {
-
this
.name = name;
-
this
.index = index;
-
}
-
-
public
static
String getName(
int
index) {
-
for
(Color c : Color.values()) {
-
if
(c.getIndex() == index) {
-
return
c.name;
-
}
-
}
-
return
null
;
-
}
-
-
public
String getName() {
-
return
name;
-
}
-
public
void
setName(String name) {
-
this
.name = name;
-
}
-
public
int
getIndex() {
-
return
index;
-
}
-
public
void
setIndex(
int
index) {
-
this
.index = index;
-
}
-
}
用法四:覆盖枚举的方法
下面给出一个toString()方法覆盖的例子。
-
public
enum
Color {
-
RED("红色"
,
1
), GREEN(
"绿色"
,
2
), BLANK(
"白色"
,
3
), YELLO(
"黄色"
,
4
);
-
-
private
String name;
-
private
int
index;
-
-
private
Color(String name,
int
index) {
-
this
.name = name;
-
this
.index = index;
-
}
-
-
@Override
-
public
String toString() {
-
return
this
.index+
"_"
+
this
.name;
-
}
-
}
用法五:实现接口
所有的枚举都继承自java.lang.Enum类。由于Java
不支持多继承,所以枚举对象不能再继承其他类。
-
public
interface
Behaviour {
-
void
print();
-
String getInfo();
-
}
-
public
enum
Color
implements
Behaviour{
-
RED("红色"
,
1
), GREEN(
"绿色"
,
2
), BLANK(
"白色"
,
3
), YELLO(
"黄色"
,
4
);
-
-
private
String name;
-
private
int
index;
-
-
private
Color(String name,
int
index) {
-
this
.name = name;
-
this
.index = index;
-
}
-
-
@Override
-
public
String getInfo() {
-
return
this
.name;
-
}
-
-
@Override
-
public
void
print() {
-
System.out.println(this
.index+
":"
+
this
.name);
-
}
-
}
用法六:使用接口组织枚举
-
public
interface
Food {
-
enum
Coffee
implements
Food{
-
BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
-
}
-
enum
Dessert
implements
Food{
-
FRUIT, CAKE, GELATO
-
}
-
}
用法七:关于枚举集合的使用
java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的
key是enum类型,而value则可以是任意类型。关于这个两个集合的使用就不在这里赘述,可以参考JDK文档。
关于枚举的实现细节和原理请参考:
分享到:
相关推荐
因为枚举很棒。 任何时候你有多种类型的对象,这些类型只是分类,而不是对象本身,你可以使用枚举。 例如,如果您过去有一个具有角色属性(admin、editor、viewer)的 User 类,您可以: a) 在数据库中存储一个...
今天小编就为大家分享一篇关于Java实现转跳不同系统使用枚举加switch的方式示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
微服务应用是分布式...包括:Java中重写的概念、重写中super的使用、方法的重写规则、方法的重载概念、方法重写与重载的区别、枚举的概念、内部类中使用枚举、迭代枚举元素、在switch中使用枚举类、枚举的常用方法。
再看看这个代码:一看就知道有问题, 这里 就有个很好的解决办法,在写public @interface MyAnnotation {}这样的类的时候,下面的代码上的错误提示就是结束的! public class dsds { public static void main(String[] ...
多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 2、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang....
多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 5、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java....
常见虚拟机监控与故障处理工具的原理和使用方法。第三部分分析了虚拟机的执行子系统,包括类文件结构、虚拟机类加载机制、虚拟机字节码执行引擎。第四部分讲解了程序的编译与代码的优化,阐述了泛型、自动装箱拆箱、...
Overload [java] 方法的重载(不同参数列表的同名方法) [,әuvә'lәud] Override [java] 方法的覆盖(覆盖父类的方法) [,әuvә'raid] polymiorphism[java] 多态 (polymorphism 多形性[,pɒli'mɒ:fizm]) ...
•在java类里只能包含Field,方法,构造器,初始化块,内部类(接口、枚举)等5种成员。 用static修饰的类成员属 于类成员,类Field既可通过类来访问,也可以通过类的对象来访问。当通过对象来访问类属性时,系统会在底...
解决线程的死掉问题和超时问题特别好使,在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java线程池ExecutorService类配合Future接口来实现。 Future接口是Java标准API的一部分,在java.util.concurrent...
在API上做了很多的调整,已经删除了很多之前废弃的方法以及类,并支持了很多Java5 的新特性:包括泛型、可变参数、枚举和autoboxing等。 因此,此版本和2.x版本不能兼容,如要使用3.0版本,最好是在新项目中去使用,...
•Java提供了两种常见的分支控制结构: –if语句:使用布尔表达式或布尔值作为分支条件来进行分支控制。 –switch语句:用于对多个整型值进行匹配,从而实现分支控制。 if条件语句 •if条件语句的3种...
我在开发此软件包时学到的东西: 正确处理Java文件输入/输出Apache POI软件包的用法充分利用Java枚举回归分析统计量Maven管理依赖关系的基本用法Pdf作为数据输入是可怕的,但是使这变得容易。这个软件包是什么以及...
一个不怎么智能,半手工方式的,但最适合实际开发的java代码生成器 核心理念: 为你生成一切,再根据所需手工copy回来工作区 用最精简的代码完成最核心的功能 特性 基于FreeMarker模板语言,并且模板易于修改 基于...
通过使用方法参数关键字,可以更改这种行为。如果没有ref,out则默认为值传递,虽然可以在方法中修改这个参数的值,但是修改后的值不会还会到调用该方法的程序中. params :params 关键字可以指定在参数数目可变处采用...
7)注意特殊字符,使用时需要使用转义字符。 注意: 1.第一行一定要写 2.xml文件是由元素和元素的内容以及属性组成的,一个xml文件中只能有一个根元素,标签和标签的内容加在一起叫作一个元素。xml是大小写 敏感的,...
在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。正是因为Java语言有如此多的优点,因此在开发本系统时我把它作为本系统的开发语言。 (2...
xsl入门的好文章 新手学习XSL的好东西 XSL语法介绍 XSL学习心得 - 调用属性值 XSLT与XML转换的详细介绍 功能应用 读写搜索 基础教程 RSS Web2.0时代,RSS你会用了吗?(技术实现总结) 知识集锦:三分钟全面了解 Blog ...
书中除了讲解C程序设计语言,还广泛介绍了作为一名C程序设计人员应该掌握的必要知识,并提供了大量的实用性很强的编程实例。本书的目标是使你在C语言程序设计方面由一位初学者成为一位称职的程序员。读者基本不需要...
有很多初学者的 C# 文章,这只是其中之一。 接下来关于 C# 的讨论主题: ? 编程结构 ? 命名空间 ? 数据类型 ? 变量 ? 运算符与表达式 ? 枚举 ? 语句 ? 类与结构 ? 修饰符 ? 属性 ? 接口 ? 函数参数 ? 数组 ? 索引...