java中的枚举类型是jdk1.5新增的一个东西,其本质是一个java.lang.Enum类的子类,每个枚举项是一个静态常量对象,由编译器为每个枚举项分配ordinal和name,其中ordinal是枚举项声明时候的顺序,从0开始,name是枚举项的名称,可以通过同名无参方法name()和ordinal()来获取,这两个方法都是final的。

我们还可以通过类型的静态valueOf方法传入一个字符串返回字符串对应的枚举值,需要说明的是每个枚举值在内存中只有一份,并且禁止被clone。Enum类对equals方法的实现也是直接比较地址值(用==来比较),并设置成了final禁止被继承,同样hashCode()也是final的。

既然是类和对象,那么枚举就具备类与对象的一切功能,可以定义实例变量和方法,可以实现接口,可以声明抽象方法然后在每个枚举值中实现(有点类似于匿名类),也可以修改编译器默认调用的构造方法,来实现定制化的枚举需求。

因为枚举类和枚举项本质就是类与对象,加上其独特的语法糖和全局唯一的性质,它可以被用来实现线程安全的单例。这也是《effective java》中推荐的单例模式实现方案。

java枚举类型总结的更多相关文章

  1. java 枚举类型分析

    最近做android开发,需要用到枚举值,这样可以连续赋值,我按之前c++那样书写,如下所示: public enum ColorSelect { RED_BAGE = 0, GREEN_BAGE, ...

  2. 【转】java枚举类型enum的使用

    原文网址:http://blog.csdn.net/wgw335363240/article/details/6359614 java 枚举类型enum 的使用 最近跟同事讨论问题的时候,突然同事提到 ...

  3. 【转】掌握java枚举类型(enum type)

    原文网址:http://iaiai.iteye.com/blog/1843553 1   背景 在java语言中还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具有int常量.之前我们通常利用 ...

  4. 转载 java枚举类型enum的使用 (原文地址:http://blog.csdn.net/wgw335363240/article/details/6359614)

    java枚举类型enum的使用 最近跟同事讨论问题的时候,突然同事提到我们为什么java中定义的常量值不采用enmu枚举类型,而采用public final static 类型来定义呢?以前我们都是采 ...

  5. Java 枚举类型简介

    目录 Java 枚举示例 Java 枚举构造函数 枚举类型是用于定义常量集合的特殊类型,更确切的说,JAVA枚举类型是一种特殊的 java 类.枚举类型可以包含常量.方法等.在 java5 中添加了 ...

  6. 【转载】Java枚举类型的使用

    枚举类型概念 package com.lxq.enumm; public class EnumDemoOne { private enum InnerEnum { RED, GREEN, YELLOW ...

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

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

  8. Java枚举类型使用示例

    Java枚举类型使用示例 学习了:https://www.cnblogs.com/zhaoyanjun/p/5659811.html http://blog.csdn.net/qq_27093465/ ...

  9. Java枚举类型的使用,数值的二进制表示

    一.Java枚举类型的使用 首先请看这段代码: package java上课; public class EnumTest { public static void main(String[] arg ...

  10. java 枚举类型知识点记录

    在日常开发中,我们常用接口装常量或者在类里面写静态常量,java1.5以后加入了枚举类型enum.枚举类型是由一组固定的常量组成的类型.枚举本质是int值.因为枚举类型没有可以访问的构造器,所以枚举类 ...

随机推荐

  1. QT聊天室--重大bug

    发送qqqqqqqqqqqqqqqqqqqqqqq: 发送test

  2. Codeforces 1245 E. Hyakugoku and Ladders

    传送门 显然这个图是个 $DAG$ ,那么就可以考虑跑 $dp$ 了 先考虑没有梯子的情况,首先把每个位置标号,越后面的位置编号越小,终点位置编号为 $1$ 那么从终点往起点 $dp$ ,枚举当前位置 ...

  3. css 清除浮动 & BFC

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 文档流的概念:html 中 block 块元素默认是单独占据一行的,从上到下排列,也就是我们说的文档流. ...

  4. gRPC Golang/Python使用

    gRPC Golang/Python使用 以前开发网站都是用http协议,学过TCP/IP协议的人都知道,在传输层TCP的基础上,应用层HTTP就是填充了一定规则的文本. 1.gRPC使用和介绍 工作 ...

  5. 从jvm源码看synchronized

    从jvm源码看synchronized 索引 synchronized的使用 修饰实例方法 修饰静态方法 修饰代码块 总结 Synchronzied的底层原理 对象头和内置锁(ObjectMonito ...

  6. SQL优化中的重要概念:事务

    原文:SQL优化中的重要概念:事务 sql 优化和事务有关系? 从表面上看,让sql跑的更快,似乎和事务这个概念没什么联系,但是关系数据库中最重要的2个概念就是 关系.事务. 关系,对应到sql中,是 ...

  7. tasklist、taskkill命令使用

    tasklist.taskkill命令使用 在Windows XP中新增了两个命令行工具“tasklist.taskkill”.通过“Ctrl+Alt+Del”组合键,打开“任务管理器”就可以查看到本 ...

  8. jmeter连接mysql数据库批量插入数据

    前提工作: 1.在jmeter官网下载jmeter包(官网地址:https://jmeter.apache.org/).此外还需下载mysql驱动包,如:mysql-connector-java-5. ...

  9. 03 WIndows编程——手绘函数调用过程

    源码 #include<Windows.h> #include<stdio.h> int MessageBoxPrint(char *szFormat, ...); int W ...

  10. KVM虚拟机高级设置——09 设置KVM虚拟机开机自动启动

    在kvm图形化管理工具里面可以设置,让kvm虚拟机随着宿主虚拟机一起启动. 必须在关机状态下做 . 设置好以后会像Windows一样创建一个快捷方式 [root@CentOS2 ~]# cd /etc ...