一.Enum枚举的作用

1.使用枚举可以限定取值范围,枚举中定义的每个常量都可以理解为对象;

Eg:

  Public enum Color{

       RED, GREEN,BULE;

}

说明:RED实际上就表示的是枚举的名称,默认的编号是0,可以使用ordinal()方法获得。

2.使用enum关键字定义枚举类,其中包含的对象可以初始化定义(初始化构造函数)

Eg:

package cn.test.java.enums;
enum ColorDemo{
RED("红色"),GREEN("绿色"),BLUE("蓝色"); private String name;
private ColorDemo(String name){
this.setName(name);
}
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
public class ConstructorEnum { public static void main(String[] args) {
for(ColorDemo c : ColorDemo.values()){
System.out.println(c.ordinal()+"--->"+c.name()+"("+c.getName()+")");
}
}
}

说明:在枚举类中定义属性及自己的构造方法,但是一旦定义有参数构造之后,在声明枚举对象的时候,就必须明确的调用构造方法,并进行传递参数。

3.在枚举中实际上已经实现好Comparable接口,所以枚举中的内容是可以排序的;

Eg:

package cn.test.java.enums;
enum ColorDemo{
RED("红色"),GREEN("绿色"),BLUE("蓝色"); private String name;
private ColorDemo(String name){
this.setName(name);
}
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
public class ConstructorEnum { public static void main(String[] args) {
for(ColorDemo c : ColorDemo.values()){
System.out.println(c.ordinal()+"--->"+c.name()+"("+c.getName()+")");
}
}
}

二.EnumMap 和EnumSet的使用

EnumMap是Map类的子类,所以它的所有方法都是从Map类中继承过来的,使用方法如下

Eg:

package cn.test.java.enums;
import java.util.EnumMap;
import java.util.Map; public class EunmMapDemo { public static void main(String[] args) {
Map<Color,String> desc = null;
desc = new EnumMap<Color,String>(Color.class);
desc.put(Color.blus,"蓝色");
desc.put(Color.green,"绿色");
desc.put(Color.red,"红色");
System.out.println("===输出全部内容");
for(Color c : Color.values()){
System.out.println(c.name()+"--->"+desc.get(c));
}
System.out.println("===输出全部键");
for(Color c: desc.keySet()){
System.out.println(c.name()+"、");
}
System.out.println();
System.out.println("=== 输出全部值");
for(String s:desc.values()){
System.out.println(s+"、");
}
}
}

EnumSet类是Set类中的子类,它使用方法中都是以静态形式继续该类方法

Eg:

package cn.test.java.enums;
import java.util.EnumSet;
public class EunmSetDemo {
public static void main(String args[]){
EnumSet<Color> es = null ; // 声明一个EnumSet对象
System.out.println("===EnumSet.allOf(Color.class) =====") ;
es = EnumSet.allOf(Color.class) ; // 将枚举的全部类型设置到EnumSet对象之中
print(es) ;
}
public static void print(EnumSet<Color> temp){ // 专门的输出操作
for(Color c:temp){ // 循环输出EnumSet中的内容
System.out.print(c + "、") ;
}
System.out.println() ;
}
};

三.枚举类的其他使用

1.枚举类型可以跟普通类一样实现接口,从但是实现接口的时候 要求枚举中的每个对象都必须单独覆写接口中的抽象方法。

Eg:

package cn.test.java.enums;
interface Print{
public String getColor();
}
enum Colors implements Print{
RED{
public String getColor(){
return "红色";
}
},
GREEN{
public String getColor(){
return "绿色";
}
},
BLUS{
public String getColor(){
return "蓝色";
}
};
}
public class InterfaceEunmDemo { public static void main(String[] args) {
for(Colors c:Colors.values()){
System.out.println(c.getColor()+"、");
}
}
}

2.枚举类中定义了抽象方法,但是要求枚举中的每个对象都分别实现此抽象方法。

Eg:

package cn.test.java.enums;
enum ColorDemo2 implements Print{
RED{
public String getColor(){
return "红色";
}
},
GREEN{
public String getColor(){
return "绿色";
}
},
BLUS{
public String getColor(){
return "蓝色";
}
};
}
public class AbstractMethodEunm { public static void main(String[] args) {
for(ColorDemo2 c: ColorDemo2.values()){
System.out.println(c.getColor()+"、");
}
}
}

中秋佳节--理解Enum枚举的更多相关文章

  1. 深入理解Java枚举类型(enum)

    https://blog.csdn.net/javazejian/article/details/71333103 深入理解Java类型信息(Class对象)与反射机制 深入理解Java枚举类型(en ...

  2. 1.0 基础、标示符、常量、数据类型(enum 枚举,struct 结构体)、操作符、循环、数组

    一.程序 现实生活中,程序是指完成某些事务的一种既定方法和过程,可以把程序看成是一系列动作执行过程的描述. 在计算机世界,程序是指令,即为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集 ...

  3. JDK源码学习笔记——Enum枚举使用及原理

    一.为什么使用枚举 什么时候应该使用枚举呢?每当需要一组固定的常量的时候,如一周的天数.一年四季等.或者是在我们编译前就知道其包含的所有值的集合. 利用 public final static 完全可 ...

  4. Enum 枚举类

    目录 Enum 枚举类 基础 定义与用途 基本方法 示例 进阶 实现原理 枚举与Class对象 自定义枚举类和构造方法及toString() Enum中使用抽象方法来实现枚举实例的多态性 Enum与接 ...

  5. 深入理解Java枚举

    深入理解Java枚举 重新认识Java枚举 老实说,挺羞愧的,这么久了,一直不知道Java枚举的本质是啥,虽然也在用,但是真不知道它的底层是个啥样的 直到2020年4月28日的晚上20点左右,我才真的 ...

  6. 如何理解java枚举,看例子

    先来看一下不用枚举怎么表示常量: //常量类 class Num { public static String ONE = "ONE"; public static String ...

  7. c# (ENUM)枚举组合类型的谷歌序列化Protobuf

    c# (ENUM)枚举组合类型的谷歌序列化Protobuf,必须在序列化/反序列化时加上下面: RuntimeTypeModel.Default[typeof(Alarm)].EnumPassthru ...

  8. C#将Enum枚举映射到文本字符串

    介绍 当将以前的C代码移植到C#中时,我快发疯了,因为有很多的数组需要将常量映射到字符串.当我在寻找一个C#的方法来完成的时候,我发现了一个自定义属性和映射的方法. 如何使用代码? 对每一个enum枚 ...

  9. MVC3不能正确识别JSON中的Enum枚举值

    一.背景 在MVC3项目里,如果Action的参数中有Enum枚举作为对象属性的话,使用POST方法提交过来的JSON数据中的枚举值却无法正确被识别对应的枚举值. 二.Demo演示 为了说明问题,我使 ...

随机推荐

  1. LDA-线性判别分析(三)

    本来是要调研 Latent Dirichlet Allocation 的那个 LDA 的, 没想到查到很多关于 Linear Discriminant Analysis 这个 LDA 的资料.初步看了 ...

  2. Myeclipse安装破解

  3. Xcode5和6上新建工程如何本地化启动页面

    建议阅读本篇文章前先具备iOS本地化的基本知识,Google中搜索“iOS本地化”,有成片的教程~~ 最近有个app需要支持英语.简体中文.繁体中文,由于启动页面上有文字,所以也不得不做下本地化处理. ...

  4. 解决ActiveX Control异常:"没有注册类(异常来自 HRESULT:0x80040154(REGDB_E_CLASSNOTREG))"

    问题背景: 1.我们的程序是用winform调用unity web player 插件来作为播放器在客户端播放动画文件的. 2.播放器是由我们的客户端程序调用的 3.客户端程序默认是以管理员身份启动的 ...

  5. CSS选择符 新的认识

    以前写选择符,很少使用">"符号,一般都是使用" "空格来代替.我觉得他们都是一样的功能,另一方面是为了方便.毕竟不用按住shift. 例如: .demo ...

  6. 对 Xcode 菜单选项的详细探索(干货)

    http://www.cocoachina.com/ios/20151204/14480.html

  7. git的使用与积累

    之前对git可以说是一无所知,不过现在做工程要用到,于是就花点时间找了一些资料,本文也只是各种git学习资料的集合,权当是学习笔记吧 一:git的安装与配置 首先,git其实一般在linux环境下都是 ...

  8. mysql数据库的连接

    public TJb checkjbByschool(long id)throws ClassNotFoundException,SQLException { Class.forName(" ...

  9. OFBiz应用https与http方式访问切换

    url.properties port.https.enabled=N port.https=8444 force.https.host=

  10. Response 关于浏览器header的方法

    Response.AddHeader   Response.AddHeader使用实例 1.文件下载,指定默认名 Response.AddHeader("content-type" ...