`

枚举基本用法demo

 
阅读更多
package enums;

import java.util.EnumMap;
import java.util.EnumSet;

public enum ProductTypeEnum {
	
	//枚举,相当于ProductTypeEnum的实例,里面参数分别为产品类型代码和产品类型名称
	OVERSEAPRODUCT(1 ,"海外产品" , "overseaProduct") {
		@Override
		public String speakProductType() {
			return "我是海外产品";
		}
	},
	COUNTRYPRODUCT(2 , "国内产品" , "countryProduct") {
		@Override
		public String speakProductType() {
			return "我是国内产品";
		}
	},
	HKPRODUCT(3 , "香港产品" , "hkProduct") {
		@Override
		public String speakProductType() {
			return "我是香港产品";
		}
	},
	MACAUPRODUCT(4 , "澳门产品" , "macauProduct") {
		@Override
		public String speakProductType() {
			return "我是澳门产品";
		}
	};
	
	private int code;//私有属性
	private String name;
	private String englishName;
	
	ProductTypeEnum(int code , String name , String englishName){//构造方法,必须是protected或者private
		this.code = code;
		this.name = name;
		this.englishName = englishName;
	}
	
	//每一个枚举成员就有了自己的方法,可以定义多个方法,方法必须以抽象方法的形式作声明(例如 abstract String event();)
	//一个方法一旦定义了就必须在每一个枚举成员中得到实现。
	public abstract String speakProductType();

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getCode() {
		return code;
	}

	public void setCode(int code) {
		this.code = code;
	}

	public String getEnglishName() {
		return englishName;
	}

	public void setEnglishName(String englishName) {
		this.englishName = englishName;
	}
	
	//根据传入的值,遍历枚举类型(values()),
	public static ProductTypeEnum fromValue(String englishName){
		for (ProductTypeEnum productTypeEnum : ProductTypeEnum.values()) {
			if (productTypeEnum.englishName.equals(englishName)) {
				return productTypeEnum;
			}
		}
		return null;
	}
	

	
	public static void main(String[] args) {
		
		//switch case 使用
		ProductTypeEnum pEnum = fromValue("overseaProduct");
		switch (pEnum) {
		case OVERSEAPRODUCT:
			System.out.println("这是一个海外产品!");
			break;
		case COUNTRYPRODUCT:
			System.out.println("这是一个国内产品!");
			break;
		case HKPRODUCT:
			System.out.println("这是一个香港产品!");
			break;
		case MACAUPRODUCT:
			System.out.println("这是一个澳门产品!");
			break;
		default:
			System.out.println("这不是一个正常产品!");
			break;
		}
		
		//enum的遍历
		System.out.println("-------------------------------------------");
		for (ProductTypeEnum productTypeEnum : ProductTypeEnum.values()) {
			System.out.println(productTypeEnum.code + "----" + productTypeEnum.englishName + "----" + productTypeEnum.name);
			System.out.println("----" + productTypeEnum.speakProductType());
		}
		
		//EnumSet
		System.out.println("--------------------------------------------");
		EnumSet<ProductTypeEnum> productTypeEnumSet = EnumSet.allOf(ProductTypeEnum.class);
		for (ProductTypeEnum productTypeEnum : productTypeEnumSet) {
			System.out.println(productTypeEnum);
		}
		
		//EmunMap
		System.out.println("--------------------------------------------");
		EnumMap<ProductTypeEnum,String> productTypeEnumMap = new EnumMap<ProductTypeEnum, String>(ProductTypeEnum.class);
		productTypeEnumMap.put(ProductTypeEnum.COUNTRYPRODUCT, "国内");
		productTypeEnumMap.put(ProductTypeEnum.HKPRODUCT, "香港");
		productTypeEnumMap.put(ProductTypeEnum.MACAUPRODUCT, "澳门");
		productTypeEnumMap.put(ProductTypeEnum.OVERSEAPRODUCT, "海外");
		for (ProductTypeEnum productTypeEnum : ProductTypeEnum.values()) {
			System.out.println(productTypeEnum.name() + "-----" + productTypeEnumMap.get(productTypeEnum));
		}
	}
}

   输出 :

这是一个海外产品!
-------------------------------------------
1----overseaProduct----海外产品
----我是海外产品
2----countryProduct----国内产品
----我是国内产品
3----hkProduct----香港产品
----我是香港产品
4----macauProduct----澳门产品
----我是澳门产品
--------------------------------------------
OVERSEAPRODUCT
COUNTRYPRODUCT
HKPRODUCT
MACAUPRODUCT
--------------------------------------------
OVERSEAPRODUCT-----海外
COUNTRYPRODUCT-----国内
HKPRODUCT-----香港
MACAUPRODUCT-----澳门

    参考链接:http://www.ibm.com/developerworks/cn/java/coretech/java-lang.html

分享到:
评论

相关推荐

    Delphi 枚举类型操作 Demo

    演示如何操作Delphi 的枚举类型。 1. 包含源代码; 2. 包含执行程序 3. 演示如下函数如何使用:GetEnumName、GetEnumProp、GetEnumValue、SetEnumProp 4. 非常简单,一看就会。

    枚举类型应用小Demo

    枚举在android应用开发中的小列子,知识点有应用到手势的绘制监听函数

    java枚举实例代码

    java枚举小例子,简单了解枚举的用法,适合初学者使用。

    C# 枚举类型的实例说明

    C# 枚举类型的实例说明,描述了枚举类型的主要使用方法

    vc实例精通源码,windows基本控件的使用Demo

    02_CheckBoxDemo 演示复选框和单选按钮控件的使用方法。 03_ComboBoxDemo 演示组合框和列表框控件的使用方法。 04_ScrollBarDemo 演示滚动条控件的使用方法。 05_SpinDemo 演示数值调节按钮的使用方法。 06...

    Silverlight2.0功能展示Demo源码

    Silverlight2.0功能展示Demo源码 1、Silverlight(3) - 2.0控件之Border, Button, Calendar, Canvas, CheckBox, ComboBox 介绍 Silverlight 2.0 控件一览:Border, Button, Calendar, Canvas, CheckBox, ComboBox 2...

    StateMachine:squirrel-foundation实现的状态机demo

    状态机 概述 ...StateListener:自定义监听器,可实现相应方法或使用注解定义监听事件 StateMaker:自定义决策类,用于实现多状态选择 declarative:该包下为声明式注解定义状态机及其实现状态流程控制

    DemoUtils:一些帮助类

    2、枚举类 3、Map 4、文件流(抽象基类、访问文件、缓冲流、转换流、对象流) 5、异常 6、Sql中In转化为Or 7、UUid 8、排序(插入、冒泡、快速) 9、读取Xml(Dom4j、Jdom) 10、反射(通过反射获取类中的方法、变量...

    iOS 使用Moya网络请求的实现方法

    由于前段时间写了这篇文章,最新Moya已更新最新版本,故此也更新了下用法,本人已使用,故特意奉上最新的使用demo供参考。Moya11.0.2Demo Moya简介 Moya是你的 app 中缺失的网络层。不用再去想在哪儿(或者如何)...

    cocos2d-xna 写的一个小游戏demo坦克大战

    2.重写 onEnter 方法添加一些基本按钮 跟一些初始化代码 3.通过schedule方法 控制 坦克 子弹的CCSprite对象 4.根据点击手机屏幕,确定出坦克的方向,根据坦克的方向修改坦克的X,Y轴坐标,来实现坦克的移动 5....

    wpf源码大全 精通C#3.0图书源码 详细源码 学习好用

    示例描述:本章介绍了XAML的语法,包括原理、使用方法以及事件处理等等。 AttachedProperty 使用XAML中的附加属性。 CodebehindDemo 使用XAML中的后置代码文件编写程序代码。 LooseXaml 松散XAML示例。 ...

    超级有影响力霸气的Java面试题大全文档

    当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。 20、abstract class和interface有什么区别? ...

    vc++ 应用源码包_6

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_1

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    java8源码-APTDemo:自定义AnnotationProcessor处理自己的Annotation

    @Target:用于描述注解的使用范围,如果自定义注解不存在@Target,则表示该注解可以使用在任何程序元素之上。接收参数ElementType,其值如下: /**接口、类、枚举、注解**/ ElementType.TYPE /**字段、枚举的常量**/...

    vc++ 应用源码包_5

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_3

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_2

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    C#入门——面向对象等,代码+注释

    第5天 00随机数 05数组 06数组的运用 06数组的运用:冒泡程序 07方法 01枚举 04结构 02枚举和int以及sting类型之间的转换 03枚举练习 第6天 01方法调用 判断是否为整数 yes或no 02方法练习求数组的和 03方法 out...

    bash-script

    自动枚举脚本 用法 ./faraday_auto_enum.sh 启动服务器 sudo systemctl start postgresql sudo systemctl start faraday-server 客户 faraday-cli auth faraday-cli select_ws demo 例子 ┌──(Hades㉿192.168.11...

Global site tag (gtag.js) - Google Analytics