java之 ------ 枚举类型
枚举
一、枚举类型具体说明
简单的说。Enum一般用来表示一组同样类型的常量。
如性别、日期、月份、颜色等。对这些属性用常量的优点是显而易见的,不仅能够保证单例,且在比較的时候能够用”==”来替
换equals。JDK1.5之前没有Enum这个类型,那时候一般用接口常量来替代。
定义枚举类型时本质上就是在定义一个类别。仅仅只是非常多细节由编译器帮您完毕了。所以某些程度上,enum是一个keyword,它的作用就像是class或interface。(这就是为什么有些人找不到当中的value()方法)
二、枚举类型的用法
1)常量
在Enum出现之前,我们定义常量通常是:public static fianl.... 这种常量比較单一。而有了枚举就好的多,它能够看成是对象常量,并且还有相似集合的功能,同一时候定义多个对象常量。
如:
<span style="font-size:14px;">enum Signal {
GREEN, YELLOW, RED;
} </span>
用的时候:Signal s = Signal.RED;即可了
注:用这个方案使用枚举类型,RED后面的分号能够不用写
2)switch
<span style="font-size:14px;">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;
}
}
} </span>
3)向枚举中加入新方法
<span style="font-size:14px;">public enum Color {
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLOW("黄色", 4) ;
// 成员变量
private final String name;
private final int index;
// 构造方法,必须私有
private Color(String name, int index) {
this.name = name;
this.index = index;
}
public String getName() { return name; }
public int getIndex() { return index; }
}
</span>
由于是常量,所以不能让其它人能够new这个对象。也就是将这个类封装起来。不让不论什么人能够new。方法是通过将构造方法私有化即可。private Color(String name, int index)
注:假设打算自己定义自己的方法。那么必须在enum实例序列的最后加入一个分号。
也就是这里的YELLOW("黄色",4)后面必须有“ ; ”。
三、枚举的静态方法
枚举的静态方法有两个
1)values()获取枚举类型的全部枚举常量返回值为static ElementType[]
for(UserTypeEnum userType: UserTypeEnum.values()){
<span style="white-space:pre"> </span>if(userType.getName().equalsIgnoreCase(name)){
return userType.getType();
}
}
2)valueOf(Class<T>
enumType, String name) 返回带指定名称的指定枚举类型的枚举常量。返回值为static ElementType
注:然后就发现一个问题,value方法我怎么找不到,查查才发现。 values()方法是编译器插入到enum定义中的static方法。所以,当你将enum实例向上转型为父类Enum类,
values()就不可訪问了。
解决的方法:在java.lang包下一个java.lang.annotation包(凝视的意思),里面有一个ELementType类,当中就有想要找的这两个静态方法。
所以不能说
枚举类型实质上继承java.lang.Enum类。
四、EnumSet类和EnumMap类
这两个类在java.util包中。看看api,主要的运用应该没什么问题。
java之 ------ 枚举类型的更多相关文章
- 深度分析 Java 的枚举类型:枚举的线程安全性及序列化问题(转)
写在前面: Java SE5 提供了一种新的类型 Java的枚举类型,关键字 enum 可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用,这是一种非常有用的功能 ...
- 深度分析Java的枚举类型—-枚举的线程安全性及序列化问题
原文:深度分析Java的枚举类型--枚举的线程安全性及序列化问题 枚举是如何保证线程安全的 要想看源码,首先得有一个类吧,那么枚举类型到底是什么类呢?是enum吗?答案很明显不是,enum就和clas ...
- Java enum枚举类型
java的枚举类型详解: 简单示例: public enum Color{ RED,BLUE,BLACK,YELLOW,GREEN } 复杂示例(带自定义构造方法与类型) public enum En ...
- Java的枚举类型使用方法详解
1.背景在java语言中还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具有int常量.之前我们通常利用public final static 方法定义的代码如下,分别用1 表示春天,2表示夏 ...
- (转+原创)java的枚举类型Enum解释
原文:http://www.cnblogs.com/mxmbk/articles/5091999.html 下文中还添加了个人的一些补充和理解. 在Java SE5之前,我们要使用枚举类型时,通常会使 ...
- [转载] Java中枚举类型的使用 - enum
目录 1 枚举类的编译特性 2 向枚举类中添加方法 3 接口内部创建枚举 4 枚举类中使用枚举 5 扩展: 验证values()不是通过父类继承的 本文转载自博客 - Java枚举类型, 博主对原文内 ...
- Java的枚举类型
引用并转载于:http://blog.csdn.net/ishallwin/article/details/9440251 1.什么是枚举: 在实际编程中,往往存在着这样的“数据集”,它们的数值在程序 ...
- java中枚举类型的使用
Java 枚举(enum) 详解7种常见的用法 JDK1.5引入了新的类型——枚举.在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便. web项目里实体类使用枚举类型: 一般在该实体 ...
- MyBatis(八):Mybatis Java API枚举类型转化的用法
最近工作中用到了mybatis的Java API方式进行开发,顺便也整理下该功能的用法,接下来会针对基本部分进行学习: 1)Java API处理一对多.多对一的用法: 2)增.删.改.查的用法: 3) ...
随机推荐
- 虚拟机上的Ubuntu开机显示“无法应用原保存的显示器配置”
如图: 解决方法: 删除monitors.xml 文件 rm ~/.config/monitors.xml
- STL_算法_查找算法(search、find_end)
C++ Primer 学习中. .. 简单记录下我的学习过程 (代码为主) search //从左往右找第一个符合条件的子区间 全部容器适用 find_end //从右往左找 ...
- spark internal - 作业调度
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 在Spark中作业调度的相关类 ...
- Android JSON数据解析(GSON方式)
要创建和解析JSON数据,也可以使用GSON来完成.GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库.使用GSON,可以很容易的将一串JSON数据转换为一个Jav ...
- position(static-relative-absolute-fixed),margin(top-right-bottom-left),top-right-bottom-left
最近写css遇到一些问题,所以准备写下来捋一下思路. 1.position=satic下看margin的使用.(top-right-bottom-left在这种case下无效) 1-1)margin ...
- BZOJ2329: [HNOI2011]括号修复(Splay)
解题思路: Replace.Swap.Invert都可以使用Splay完美解决(只需要解决一下标记冲突就好了). 最后只需要统计左右括号冲突就好了. 相当于动态统计最大前缀合和最小后缀和. 因为支持翻 ...
- Mysql 简介二
Mysql 数据库引擎: 数据库引擎是用于存储.处理和保护数据的核心服务 Mysql支持的引擎一般有这几种: MyISAM Mysql 5.1版本之前默认的存储引擎,仅仅支持表锁,但查询速度较Inno ...
- 微信小程序仿微信运动步数排行-交互
效果图如下: 图片.png wxml: <view class="item-box"> <view class="items"> < ...
- prettyJson V7.1 使用
头文件 #include "document.h" #include "prettywriter.h" #include "filereadstrea ...
- D3.js中对array的使用
由于D3类库和array密切相关,我们有必要讨论一下D3中的数据绑定以及在数组内部运算的方法. 1.D3中的数组 和其他编程语言一样,D3的数组元素可以是数字或者字符等类型,例如: someData= ...