有关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的重新理解的更多相关文章

  1. C语言枚举类型(Enum)深入理解

    在实际编程中,有些数据的取值往往是有限的,只能是非常少量的整数,并且最好为每个值都取一个名字,以方便在后续代码中使用,比如一个星期只有七天,一年只有十二个月,一个班每周有六门课程等. 以每周七天为例, ...

  2. java源码学习(三)Enum

    Enum Enum类是java.lang包中一个类,他是Java语言中所有枚举类型的公共基类. 一.定义 public abstract class Enum<E extends Enum< ...

  3. Java 7 源码学习系列(二)——Enum

    Enum Enum类是java.lang包中一个类,他是Java语言中所有枚举类型的公共基类. 一.定义 public abstract class Enum<E extends Enum< ...

  4. c++编程规范的纲要和记录

    这是一本好书, 可以让你认清自己对C++的掌握程度.看完之后,给自己打分,我对C++了解多少? 答案是不足20分.对于我自己是理所当然的问题, 就不提了, 记一些有启发的条目和细节: (*号表示不能完 ...

  5. c++编程规范的纲要和记录 (转)

    这是一本好书, 可以让你认清自己对C++的掌握程度. 看完之后,给自己打分,我对C++了解多少? 答案是不足20分. 对于我自己是理所当然的问题, 就不提了, 记一些有启发的条目和细节: (*号表示不 ...

  6. C++编程规范纲要要点小结

    这是一本好书, 可以让你认清自己对C++的掌握程度. 看完之后,给自己打分,我对C++了解多少? 答案是不足20分. 对于我自己是理所当然的问题, 就不提了, 记一些有启发的条目和细节: (*号表示不 ...

  7. 中秋佳节--理解Enum枚举

    一.Enum枚举的作用 1.使用枚举可以限定取值范围,枚举中定义的每个常量都可以理解为对象: Eg: Public enum Color{ RED, GREEN,BULE; } 说明:RED实际上就表 ...

  8. 关于对Enum的理解

    之前一直对枚举类型的理解存在误解,现重新学习 Enum 类型的介绍 枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中.而这种枚举类型的名称则 ...

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

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

随机推荐

  1. POJ 2342 Anniversary party (树形DP入门)

    题意: 给定一个上下属的关系树, 每个人有一个活跃值, 现在要参加一个派对, 每个人都不会和自己的上属参加派对(上属参加了,下属就不能参加了), 求参加派对的最大活跃值 分析: 枚举每个节点取与不取得 ...

  2. JS获取粘贴内容

    http://classjs.com/2013/03/05/js%E8%8E%B7%E5%8F%96%E7%B2%98%E8%B4%B4%E5%86%85%E5%AE%B9/ 思路:在编辑环境中,粘贴 ...

  3. zoj 1383 Binary Numbers

    Binary Numbers Time Limit: 2 Seconds      Memory Limit: 65536 KB Given a positive integer n, print o ...

  4. 72.spring boot讨论群【从零开始学Spring Boot】

    [从零开始学习Spirng Boot-常见异常汇总] 如果您碰到什么问题,您可以加群进行探讨,在群里有加入的都是Spring Boot志同道合的朋友: Spring Boot QQ交流群:193341 ...

  5. 洛谷P1771 方程的解_NOI导刊2010提高(01)

    题目描述 佳佳碰到了一个难题,请你来帮忙解决. 对于不定方程a1+a2+…+ak-1+ak=g(x),其中k≥2且k∈N,x是正整数,g(x)=x^x mod 1000(即x^x除以1000的余数), ...

  6. 【尺取或dp】codeforces C. An impassioned circulation of affection

    http://codeforces.com/contest/814/problem/C [题意] 给定一个长度为n的字符串s,一共有q个查询,每个查询给出一个数字m和一个字符ch,你的操作是可以改变字 ...

  7. Linux内核设计与实现——读书笔记1:内核简介

    内核:有的时候被称管理者或者操作系统核心,通常内核负责响应中断的中断服务程序, 负责管理多个进程从而分享处理器时间的调度程序,负责管理进程地址空间德内存管理程序 和网络,进程间通信等系统服务程序共同组 ...

  8. CPM、CPC、CPA、PFP、CPS、CPL、CPR介绍

    一个网络媒体(网站)会包含有数十个甚至成千上万个页面,网络广告所投放的位置和价格 就牵涉到特定的页面以及浏览人数的多寡.这好比平面媒体(如报纸)的“版位”.“发行 量”,或者电波媒体(如电视)的“时段 ...

  9. SeaJS项目完整实例【转】

    index.html——主页面. sea.js——SeaJS脚本. init.js——init模块,入口模块,依赖data.jquery.style三个模块.由主页面载入. data.js——data ...

  10. P2820 局域网 洛谷

    https://www.luogu.org/problem/show?pid=2820 题目背景 某个局域网内有n(n<=100)台计算机,由于搭建局域网时工作人员的疏忽,现在局域网内的连接形成 ...