有关 enum的重新理解
有关enum 的再次理解:
所有的枚举都继承自java.lang.Enum类。
说到底enum也只是一个java类,只不过他有几个特殊的点。
1、enum中的各个实例,就是enum的static实例化对象,而他自身将构造函数隐藏,所以我们只能使用代码中写到的实例而不能自己去new一个enum的实例。
2、enum只是个java类,所以自定义函数方法和属性、多态、 重载、实现接口都是被允许的。
3、enum 内部自带name和ordinal,name就是实例的名字,ordinal就是对实例进行的一个排序的序号。所以我们可以使用 “==”或者“equals” 来判断enum是否相等。
4、enum实现了 Comparable 接口,所以我们也可以使用compare,对enum大小进行判断,默认使用的是 ordinal属性。
5、现在的switch可以使用enum作为判断依据。
6、在接口内部实现接口 对实例进行分类
7、java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的 key是enum类型,而value则可以是任意类型。
package EnumT; import java.util.EnumSet; public enum ColorEnum { /**
*
* //1、 重写构造方法,使用多个构造方法重载 并使用
*/
RED,GREEN,BLUE("BULE"); private String value = "color";
private ColorEnum() {
} private ColorEnum(String value){
this.value = value;
} public String getValue() {
return value;
} public void setValue(String value) {
this.value = value;
} /**
* 重写 方法
* @return
*/
@Override
public String toString() {
return "ColorEnum{" +
"value='" + value + '\'' +
'}';
} static public void main (String... args){ /**
* 2、name ordinal
*/
//获取 name
String name = ColorEnum.RED.name();
//获取 ordinal
int ordinal = ColorEnum.RED.ordinal();
System.out.println("name: "+name+"\t ordinal: "+ordinal); /**
* 3、equals ==
*/
boolean equal ;
// == 判断 是否相等
equal = ( ColorEnum.RED==ColorEnum.RED);
System.out.println("== : "+equal);
// equals 判断相等
equal = (ColorEnum.RED.equals(ColorEnum.RED));
System.out.println("equals : "+equal); /**
* 4、compare
* 0、正、负 表示先后顺序
*/
int e = (ColorEnum.RED.compareTo(ColorEnum.BLUE));
System.out.println("compare :"+e);
/**
* 5、switch
*/
ColorEnum colorEnum = ColorEnum.RED;
switch (colorEnum){
case RED:break;
case BLUE:break;
case GREEN:break; }
/**
* 6、EnumSet
*/
EnumSet<ColorEnum> colorEnumsSet = EnumSet.allOf(ColorEnum.class);
for (ColorEnum colorEnum1 :colorEnumsSet){
System.out.println("EnumSet :"+colorEnum1.name());
} } }
运行结果:
ame: RED ordinal: 0
== : true
equals : true
compare :-2
EnumSet :RED
EnumSet :GREEN
EnumSet :BLUE Process finished with exit code 0
有关 enum的重新理解的更多相关文章
- C语言枚举类型(Enum)深入理解
在实际编程中,有些数据的取值往往是有限的,只能是非常少量的整数,并且最好为每个值都取一个名字,以方便在后续代码中使用,比如一个星期只有七天,一年只有十二个月,一个班每周有六门课程等. 以每周七天为例, ...
- java源码学习(三)Enum
Enum Enum类是java.lang包中一个类,他是Java语言中所有枚举类型的公共基类. 一.定义 public abstract class Enum<E extends Enum< ...
- Java 7 源码学习系列(二)——Enum
Enum Enum类是java.lang包中一个类,他是Java语言中所有枚举类型的公共基类. 一.定义 public abstract class Enum<E extends Enum< ...
- c++编程规范的纲要和记录
这是一本好书, 可以让你认清自己对C++的掌握程度.看完之后,给自己打分,我对C++了解多少? 答案是不足20分.对于我自己是理所当然的问题, 就不提了, 记一些有启发的条目和细节: (*号表示不能完 ...
- c++编程规范的纲要和记录 (转)
这是一本好书, 可以让你认清自己对C++的掌握程度. 看完之后,给自己打分,我对C++了解多少? 答案是不足20分. 对于我自己是理所当然的问题, 就不提了, 记一些有启发的条目和细节: (*号表示不 ...
- C++编程规范纲要要点小结
这是一本好书, 可以让你认清自己对C++的掌握程度. 看完之后,给自己打分,我对C++了解多少? 答案是不足20分. 对于我自己是理所当然的问题, 就不提了, 记一些有启发的条目和细节: (*号表示不 ...
- 中秋佳节--理解Enum枚举
一.Enum枚举的作用 1.使用枚举可以限定取值范围,枚举中定义的每个常量都可以理解为对象: Eg: Public enum Color{ RED, GREEN,BULE; } 说明:RED实际上就表 ...
- 关于对Enum的理解
之前一直对枚举类型的理解存在误解,现重新学习 Enum 类型的介绍 枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中.而这种枚举类型的名称则 ...
- 深入理解Java枚举类型(enum)
https://blog.csdn.net/javazejian/article/details/71333103 深入理解Java类型信息(Class对象)与反射机制 深入理解Java枚举类型(en ...
随机推荐
- kafka 理论学习
http://blog.csdn.net/paul342/article/details/50479491 kafka基本知识.
- Struts2的Action配置的各项默认值
1 如果没有为action指定class,默认是ActionSupport 2 如果没有为action指定method,默认执行action中的execute()方法 3 如果没有指定result的n ...
- Linux如何查看CPU负载
负载(load)是Linux机器的一个重要指标,直观了反应了机器当前的状态.如果机器负载过高,那么对机器的操作将难以进行. linux的负载高,主要是由于CPU使用.内存使用.IO消耗三部分构成.任意 ...
- Leetcode 299.猜字游戏
猜字游戏 你正在和你的朋友玩 猜数字(Bulls and Cows)游戏:你写下一个数字让你的朋友猜.每次他猜测后,你给他一个提示,告诉他有多少位数字和确切位置都猜对了(称为"Bulls&q ...
- Python和Mongodb
定义好链接DB类 # -*- coding: UTF-8 -*- from pymongo import MongoClient # 数据库连接 class MongoDB(object): def ...
- php面向对象(设计模式 工厂模式)
//设计模式//单例模式//类的计划生育//让该类在外界无法造成对象//让外界可以造一个对象,做一个静态方法返回对象//在累里面可以通过静态变量控制返回对象只能有一个 //class Cat//{// ...
- 表连接sql执行计划学习
循环嵌套连接(Nested Loop Join) 合并连接(Merge Join) 哈西匹配(Hash Join) 文章:浅谈SQL Server中的三种物理连接操作 循环嵌套,如果内循环列上有索引, ...
- POJ-3100-Root of the Problem,原来是水题,暴力求解~~~
Root of the Problem Time Limit: 1000MS Memory Limit: 65536K http://poj.org/problem?i ...
- 【并查集】F.find the most comfortable road
https://www.bnuoj.com/v3/contest_show.php?cid=9146#problem/F [题意] 给定n个城市和m条带权边,q次查询,问某两个城市之间的所有路径中最大 ...
- Django 的信号 & Flask 的信号
信号:框架内部已帮助开发者预留的可扩展的位置 一.Django 的信号 项目目录结构: django_signal |--- app01 |--- models.py |--- views.py .. ...