一.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. POJ 1300 欧拉通路&欧拉回路

    系统的学习一遍图论!从这篇博客开始! 先介绍一些概念. 无向图: G为连通的无向图,称经过G的每条边一次并且仅一次的路径为欧拉通路. 如果欧拉通路是回路(起点和终点相同),则称此回路为欧拉回路. 具有 ...

  2. Java之Static静态修饰符详解

    Java之Static静态修饰符详解 Java之Static静态修饰符详解 一.特点 1.随着类的加载而加载,随着类的消失而消失,生命周期最长 2.优先于对象存在 3.被所有类的对象共享 4.可以直接 ...

  3. Laravel 安装指南

    http://www.golaravel.com/article/laravel-installation-guide/ http://laravel.com/api/4.1/ http://ding ...

  4. Dalvik虚拟机的启动过程分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8885792 在Android系统中,应用程序进 ...

  5. OMXCodec与OMX事件处理流程

    学习了解Mutilmedia Framework有一段时间了,今天闲下来稍微整理整理.OMXCodec.cpp类属于libstagefright,在整个MM PF 相当OMX的适配层,供awesome ...

  6. .NET基础拾遗(1)类型语法基础和内存管理基础1

    一.基础类型和语法 1.1 .NET中所有类型的基类是什么? 在.NET中所有的内建类型都继承自System.Object类型. 1.2 值类型和引用类型的区别? 在.NET中的类型分为值类型和引用类 ...

  7. 利用IIS7 解决URL访问限制问题

    网站可以通过URl直接访问一些不希望被访问的东西, 比如一些图片,js,css等等. 为了解决这个问题看了好多文章,不过毕竟我是新手菜鸟级别的,没有具体的解决方法,真心不知道怎么弄. 今天在看IIS的 ...

  8. win7 AnkhSVN 安装报错

    重装系统后,需要安装AnkhSVN,结果一直报如下错误 An error occurred during the installation of assembly"Microsoft.VC8 ...

  9. HttpWebRequest上传文件(Excel等)

    //上传代码/// <summary> /// 文件上传 /// </summary> /// <param name="strAddress"> ...

  10. $(document).ready(function(){})和window.onload=function(){}的比较

    这两个函数想必每个前端开发者都不会很陌生,但是很了解用法的人估计就比较少了,博主也是最近才开始注意到这两个函数的区别. 首先$(document).ready(function(){})等同于$(). ...