在日常开发中,我们常用接口装常量或者在类里面写静态常量,java1.5以后加入了枚举类型enum。枚举类型是由一组固定的常量组成的类型。枚举本质是int值。因为枚举类型没有可以访问的构造器,所以枚举类型是真正的final。枚举的思想是:通过共有静态的final域为每个枚举常量导出实例类。enum实现了Serializable和Comparable接口。

  最简单的enum类如下:

  

 public enum MyEnum {

     GREEN,BLUE,BLACK;
}

  常量用逗号分隔,用分号结束。

  enum有共有的方法name()和ordinal(),分别输出该常量的字符串名和枚举的序数。这个序数从0开始,是常量的位置,依次递增,所以这个值会跟随常量的位置而不同。所以这个方法不实用。一般需要定义自己的实例域。对以上代码改进如下:

  

 public enum MyEnum {

     GREEN(1),BLUE(2),BLACK(3);
private MyEnum(int value){ }
}

  注意,enum只能定义default或者private的构造器。这就说明enum不允许手动实例化。每次调用枚举中的常量时候,实际内部调用了构造器,这就是 上面所说的通过常量生成实例。

  枚举有values方法,可以返回当前枚举类的所有常量。方法如下:

  

 public enum MyEnum {

     GREEN(1),BLUE(2),BLACK(3);
private MyEnum(int value){ } public static void main(String[] args) {
for (MyEnum myenum : MyEnum.values()) {
System.out.println(myenum.name());//GREEN BLUE BLACK
}
}
}

  那么,我们可以为自定义的枚举做一些功能,例如根据name查找我们自定义的参数。例如:

 public enum MyEnum {

     GREEN(1),BLUE(2),BLACK(3);
private int value;
private MyEnum(int value){
this.value = value;
} public static int getValue(String name){
for (MyEnum myenum : MyEnum.values()) {
if(myenum.name() == name){
return myenum.value;
}
}
return 0;
} public static void main(String[] args) {
System.out.println(MyEnum.getValue(MyEnum.BLACK.name())+""); //
}
}

  还可以使用EnumSet放置枚举类型,生成枚举集合,EnumSet在java.util包中。并且实现了Collection和Serializable接口,继承了AbstractSet类,所以也实现了Set接口。示例如下:

  

 public static void printColor(Set<MyEnum> colors){
for (MyEnum myEnum : colors) {
System.out.println(myEnum.name());
}
} public static void main(String[] args) {
MyEnum.printColor(EnumSet.of(MyEnum.BLACK,MyEnum.BLUE)); //BLUE BLACK
}

  枚举类型也提供了EnumMap类,它允许使用枚举作为它的键值,这样我们就能直接利用枚举存放map类型数据,而不用需要转换枚举类型到我们需要的数据了。EnumMap代码声明如下:

  public class EnumMap<K extends Enum<K>, V> extends AbstractMap<K, V> implements java.io.Serializable, Cloneable

  从中看出key为枚举类型的。其中key值使用了泛型限制,使用extends Enum,保证了编译安全。

java 枚举类型知识点记录的更多相关文章

  1. java 枚举类型分析

    最近做android开发,需要用到枚举值,这样可以连续赋值,我按之前c++那样书写,如下所示: public enum ColorSelect { RED_BAGE = 0, GREEN_BAGE, ...

  2. 【转】java枚举类型enum的使用

    原文网址:http://blog.csdn.net/wgw335363240/article/details/6359614 java 枚举类型enum 的使用 最近跟同事讨论问题的时候,突然同事提到 ...

  3. 【转】掌握java枚举类型(enum type)

    原文网址:http://iaiai.iteye.com/blog/1843553 1   背景 在java语言中还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具有int常量.之前我们通常利用 ...

  4. 转载 java枚举类型enum的使用 (原文地址:http://blog.csdn.net/wgw335363240/article/details/6359614)

    java枚举类型enum的使用 最近跟同事讨论问题的时候,突然同事提到我们为什么java中定义的常量值不采用enmu枚举类型,而采用public final static 类型来定义呢?以前我们都是采 ...

  5. Java 枚举类型简介

    目录 Java 枚举示例 Java 枚举构造函数 枚举类型是用于定义常量集合的特殊类型,更确切的说,JAVA枚举类型是一种特殊的 java 类.枚举类型可以包含常量.方法等.在 java5 中添加了 ...

  6. 【转载】Java枚举类型的使用

    枚举类型概念 package com.lxq.enumm; public class EnumDemoOne { private enum InnerEnum { RED, GREEN, YELLOW ...

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

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

  8. Java枚举类型使用示例

    Java枚举类型使用示例 学习了:https://www.cnblogs.com/zhaoyanjun/p/5659811.html http://blog.csdn.net/qq_27093465/ ...

  9. Java枚举类型的使用,数值的二进制表示

    一.Java枚举类型的使用 首先请看这段代码: package java上课; public class EnumTest { public static void main(String[] arg ...

随机推荐

  1. lambda表达式和查询表达式

    (1)Lambda表达式定义: Lambda是创建匿名函数的另一种形式.它比对应的匿名方法更加的简化.因此,所有的情况都推荐使用Lambda表达式.   它可以包括表达式和语句,并且用于创建委托和事件 ...

  2. tomcat启动时 myeclipse控制台中文乱码

    情况1: tomcat中conf目录下有个叫server.xml的文件,里面 <Connector port="8080" protocol="HTTP/1.1&q ...

  3. 阐述程序员如何实现IT职业定位

    [动力IT职业生涯规划课]阐述程序员如何实现IT职业定位 2016年9月16日下午17:00,南通动力IT教育创始人阙海忠先生,亲自向动力IT学员传授其十八年IT从业经验. 一个程序员的完美人生定位 ...

  4. WIN32API 自定义颜色下拉列表控件

    效果如下: 原创-转载请著名来源 1,新建颜色属性类“CNColor”: class CNColor { public: COLORREF m_crColor; //颜色RGB值 WCHAR m_cC ...

  5. app进入后台之后接收到通知,点进去进入新的页面,再次进入后台,再点击通知进入页面(,两次通过通知进入的页面,创建了两次,会多一个页面,)解决办法监听

    在点击通知进入的页面的 //UIApplicationWillResignActiveNotification是app即将进入后台的方法 //增加监听使它在进入后台之前pop上一个页面 - (void ...

  6. 使用NSScanner,将十六进制字符串转十进制

    例子:  NSString * numStr = [@"0x110" substringFromIndex:2]; unsigned long long result = 0; N ...

  7. 第九章 springboot + mybatis + 多数据源 (AOP实现)(转载)

    本编博客转发自:http://www.cnblogs.com/java-zhao/p/5415896.html 1.ShopDao package com.xxx.firstboot.dao; imp ...

  8. caffe net 可视化工具

    http://ethereon.github.io/netscope/#/editor 将对应的网络输入到里面,然后按shift+enter即可查看对应的网络结构

  9. 【Java】:googleSearch

    google custom search是一个基于google的搜索引擎api,可以请求谷歌的搜索数据 pala pala  pala  ... 实现: 1.注册谷歌账号 2.创建google项目 1 ...

  10. View优化

    前面写了个View画圆弧,为了让他和底层图片效果融合,采用先把圆弧画到和图片一样大小的画布上,然后用canvas的变换位图方法映射过去. bitmapWithReflection = Bitmap.c ...