java enum 定义属性_java enum(枚举)使用详解 + 总结
enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性,存放在 java.lang 包中。
下面是我在使用 enum 过程中的一些经验和总结,主要包括如下内容:
8. 总结
原始的接口定义常量
语法(定义)
创建枚举类型要使用 enum 关键字,隐含了所创建的类型都是 java.lang.Enum 类的子类(java.lang.Enum 是一个抽象类)。枚举类型符合通用模式 Class Enum>,而 E 表示枚举类型的名称。枚举类型的每一个值都将映射到 protected Enum(String name, int ordinal) 构造函数中,在这里,每个值的名称都被转换成一个字符串,并且序数设置表示了此设置被创建的顺序。
这段代码实际上调用了7次 Enum(String name, int ordinal):
遍历、switch 等常用操作
对enum进行遍历和switch的操作示例代码:
输出结果:
enum 对象的常用方法介绍
intcompareTo(E o)
比较此枚举与指定对象的顺序。
ClassgetDeclaringClass()
返回与此枚举常量的枚举类型相对应的 Class 对象。
Stringname()
返回此枚举常量的名称,在其枚举声明中对其进行声明。
intordinal()
返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
StringtoString()
返回枚举常量的名称,它包含在声明中。
static > TvalueOf(Class enumType, String name)
返回带指定名称的指定枚举类型的枚举常量。
输出结果:
给 enum 自定义属性和方法
给 enum 对象加一下 value 的属性和 getValue() 的方法:
输出结果:
EnumSet,EnumMap 的应用
原理分析
enum 的语法结构尽管和 class 的语法不一样,但是经过编译器编译之后产生的是一个class文件。该class文件经过反编译可以看到实际上是生成了一个类,该类继承了java.lang.Enum。EnumTest 经过反编译(javap com.hmw.test.EnumTest 命令)之后得到的内容如下:
所以,实际上 enum 就是一个 class,只不过 java 编译器帮我们做了语法的解析和编译而已。
总结
可以把 enum 看成是一个普通的 class,它们都可以定义一些属性和方法,不同之处是:enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enum(java是单一继承)。
java enum 定义属性_java enum(枚举)使用详解 + 总结相关推荐
- java单例设计模式_Java设计模式之单例模式详解
在Java开发过程中,很多场景下都会碰到或要用到单例模式,在设计模式里也是经常作为指导学习的热门模式之一,相信每位开发同事都用到过.我们总是沿着前辈的足迹去做设定好的思路,往往没去探究为何这么做,所以 ...
- Java 初始化 代码块_Java中初始化块详解及实例代码
Java中初始化块详解 在Java中,有两种初始化块:静态初始化块和非静态初始化块. 静态初始化块:使用static定义,当类装载到系统时执行一次.若在静态初始化块中想初始化变量,那仅能初始化类变量, ...
- java代码轻量级锁_Java轻量级锁原理详解(Lightweight Locking)
转自http://www.cnblogs.com/redcreen/archive/2011/03/29/1998801.html 大家知道,Java的多线程安全是基于Lock机制实现的,而Lock的 ...
- java的static类_java中staticclass静态类详解
一般情况下是不可以用static修饰类的.如果一定要用static修饰类的话,通常static修饰的是匿名内部类. 在一个类中创建另外一个类,叫做成员内部类.这个成员内部类可以静态的(利用static ...
- java connection 单例_Java设计模式之单例模式详解
Java设计模式之单例模式详解 什么是设计模式 设计模式是在大量的实践中总结和理论之后优选的代码结构,编程风格,以及解决问题的思考方式.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可 ...
- java指数表示法_Java指数计数法详解
Java指数计数法详解 时间:2017-10-16 来源:华清远见Java培训中心 Java指数计数法并不是一个很难的运算,关键是你要理解应用,很多朋友不理解Java指数计数法,所以也无从运用 ...
- java解析json数据_java解析JSON数据详解
JSON是目前最流行的轻量级数据交换语言(没有之一).尽管他是javaScript的一个子集.但由于其是独立与语言的文本格式,它几乎可以被所有编程语言所支持. 以下是对java语言中解析json数据的 ...
- java中object类型_Java常用类object详解
1.Object概述: 类Object是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括数组)都实现这个类的方法. 2.构造方法详细信息: Object只有一个无参构造方法,因为ob ...
- 组合模式java怎么获取钥匙_java中组合模式详解和使用方法
组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结构型模式, ...
最新文章
- OpenCASCADE:下载安装
- linux python pymysql,Python之pymysql的使用
- 【转】ABP源码分析十一:Timing
- mount --bind的用处
- Windows10/11安装Linux子系统Ubuntu 20.04LTS,轻松使用生信软件,效率秒杀虚拟机
- mysql - GTID主从复制
- linux命令界面输入不了密码,如何在 Linux 中不输入密码运行 sudo 命令
- ROS Image_transport使用
- ios控制ios_iOS UIMenuController UIMenuItem
- IOS之未解问题--给UITableView提取UITableViewDataSource并封装瘦身失败
- 埃夫特机器人示教器linux屏幕多少钱,不限 埃夫特机器人电路板维修
- 题解 P2212 【[USACO14MAR]浇地Watering the Fields】
- vue项目引入typescript(vue与ts混用)
- 手把手教你做游戏外挂
- 《Reasoning about Entailment with Neural Attention》阅读笔记
- Android基础 《密西西比河谷州立大学:Android应用程序开发》(一)
- python输出字符串两次_下列程序的运行结果是: str = Hello print(str * 2) # 输出字符串两次 print(str + Python!) # 连接字符串_学小...
- mysql create table as select from_CREATE TABLE 表名 AS SELECT 语句
- 【C#】关于委托和事件
- 马斯洛人类需求五层次理论(Maslow's Hierarchy of Needs)