有关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

最新文章

  1. XCode8 App上传AppStore更新
  2. 使用sp_xml_preparedocument处理XML文档
  3. Model View
  4. C#常用代码集合(1)
  5. several生命周期
  6. FastDFS之java客户端使用
  7. NC portal怎么重新开始入门,整个配置过程包括配置一个节点
  8. VirtualBox设置共享文件夹和镜像访问的方法
  9. Linux Kernel &#39;perf_event.c&#39;本地权限提升漏洞
  10. jquery上传控件个人使用
  11. Qt5官方demo分析集29——Extending QML - Property Value Source Example
  12. 【Python】functools.wraps定义函数装饰器
  13. 基于腾讯Centos7云服务器搭建SVN版本控制库
  14. java.sql.SQLException之数组越界
  15. 详解RPC远程调用和消息队列MQ的区别
  16. docker端口映射启动报错Error response from daemon: driver failed programming external connectivity on endpoint jms_guacamole
  17. Host aggregate分区
  18. easyui datagrid如何获取到每行的文本框
  19. Sql UNION 合并多个结果集并排序
  20. OpenERP(odoo)开发实例之搜索检索过去3个月的数据

热门文章

  1. HTML+CSS 制作HTML5标志图
  2. python re 正则提取中文
  3. JavaEE JDBC 了解数据库连接池
  4. MD5散列算法的示例
  5. 【转】关于大型网站技术演进的思考(二十一)--网站静态化处理—web前端优化—下【终篇】(13)
  6. squid重定向(python 代码)
  7. 以太坊和IPFS如何存储数据
  8. 一个SAM的样例
  9. 【Dijstra堆优化】HDU 3986 Harry Potter and the Final Battle
  10. [转]eclipse的android智能提示设置