`

例说java枚举类型

    博客分类:
  • java
阅读更多
import java.util.Calendar;


/**
 *最简普通枚举
 * @author  Walter.Huang
 * @create date 2014-12-18
 */
enum WEEKEND{
	SATURDAY,SUNDAY;
}


/**
 * 带有静态方法的的枚举
 * 
 * @author Walter.Huang
 * @create date 2014-12-18
 */
enum Season {

	SPRING, SUMMER, AUTUMN, WINTER;// 定义四季

	/**
	 * 枚举像普通的类一样可以添加属性和方法,可以为它添加静态和非静态的属性或方法
	 * @param month
	 * @return Season
	 * @author Walter.Huang
	 * @update date 2014-12-18
	 */
	public static Season getSeason(int month) {

		if (month >= 2 && month <= 4)
			return SPRING;
		if (month >= 5 && month <= 7)
			return SUMMER;
		if (month >= 8 && month <= 10)
			return AUTUMN;

		return WINTER;
	}
}


/**
 * 实现带有构造器的枚举
 * @author Walter.Huang
 * @create date 2014-12-18
 */
enum Authority {

	LIST_ARTICLE("admin/article/list.do", 1), 
	UPDATE_ARTICLE("admin/article/update.do", 2),
	DELETE_ARTICLE("admin/article/delete.do", 3);

	Authority(String uri, int code) {
		setUri(uri);
		setCode(code);
	}

	/**
	 * 根据uri获取权限
	 * @param srcUri
	 * @return Authority
	 * @author Walter.Huang
	 * @update date 2014-12-18
	 */
	public static Authority getAuthority(String srcUri){
		for(Authority authority: Authority.values()){
			if(srcUri.indexOf(authority.getUri())>0){
				return authority;
			}
		}	
		return null;
	}
	
	
	private String uri;
	private int code;

	public String getUri() {
		return uri;
	}

	public void setUri(String uri) {
		this.uri = uri;
	}

	public int getCode() {
		return code;
	}

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

}


/**
 * 实现带有抽象方法的枚举 
 * @author  Walter.Huang
 * @create date 2014-12-18
 */
enum OrderState {  
     
	 CANCEL {//取消
    	 public String getName(){return "已取消";}
    	 public int getStatus(){return -1;}
     },  

     WAITCONFIRM {//待审核
    	 public String getName(){return "待审核";}
    	 public int getStatus(){return 0;}
     },
     
     WAITPAYMENT {//等待付款
    	 public String getName(){return "等待付款";}
    	 public int getStatus(){return 1;}
     },
     
     ADMEASUREPRODUCT {//正在配货
    	 public String getName(){return "正在配货";}
    	 public int getStatus(){return 2;}
     },
     
     WAITDELIVER {//等待发货
    	 public String getName(){return "等待发货";}
    	 public int getStatus(){return 3;}
     }, 
     
     DELIVERED {//已发货
    	 public String getName(){return "已发货";}
    	 public int getStatus(){return 4;}
     },  
 
     RECEIVED {//已收货
    	 public String getName(){return "已收货";}
    	 public int getStatus(){return 5;}
     };
     
     public abstract String getName();
     public abstract int getStatus();
     
     
     /**
      * 根据状态码获取订单状态
      * @param status
      * @return OrderState
      * @author Walter.Huang
      * @update date 2014-12-18
      */
     public static OrderState getOrderStateByStatus(int status){
    	 for(OrderState orderState:OrderState.values()){
    		 if(orderState.getStatus()==status){
    			 return orderState;
    		 }
    	 }
    	 return null;
     }
     
     
     /**
      * 根据状态码获取订单状态名
      * @param status
      * @return String
      * @author Walter.Huang
      * @update date 2014-12-18
      */
     public static String getNameByStatus(int status){
    	 for(OrderState orderState:OrderState.values()){
    		 if(orderState.getStatus()==status){
    			 return orderState.getName();
    		 }
    	 }
    	 return "";
     }
     
 }

/**
 *测试类 
 * @author  Walter.Huang
 * @create date 2014-12-18
 */
public class AllEnum {
	public static void main(String[] args) {
		
		/*简单的枚举类一般常用witch...case语句做判断*/
		WEEKEND aday=WEEKEND.SATURDAY;
		switch(aday){
			case SATURDAY:
				System.out.println("今天是周六,可以睡懒觉!");
				break;
			case SUNDAY:
				System.out.println("今天是周日,可以去爬山!");
				break;
			default:
				System.out.println("今天要工作,一起加油哦!");
		}
		/****************/
		
		
		/*根据月份获取当前的季节*/
		Calendar calendar = Calendar.getInstance();
		int month=calendar.get(Calendar.MONTH)+1;//获取当前是年中的第几月
		
		Season aSeason=Season.getSeason(month);
		switch(aSeason){
			case SPRING:
				System.out.println(month+"月,春天,希望!");
				break;
			case SUMMER:
				System.out.println(month+"月,夏天,热情!");
				break;
			case AUTUMN:
				System.out.println(month+"月,秋天,收获!");
				break;
			case WINTER:
				System.out.println(month+"月,冬天,积蓄!");
				break;
		}
		/****************/
		
		
		/*根据根据拦截的uri获取权限的代码*/
		String requestUri="http://www.walter.com/admin/article/update.do?flag=100";
		Authority authority = Authority.getAuthority(requestUri);
		if(authority!=null){	
			System.out.println("权限uri规则是:"+authority.getUri()+" 权限的代码是:"+authority.getCode());
		}else{
			System.out.println("改uri没有添加加权限的控制,允许直接访问");
		}
		/****************/
		
		
		/*订单状态枚举方式描述*/
		OrderState orderState=OrderState.RECEIVED;
		System.out.println("订单状态是:"+orderState.getName()+" 状态代码是:"+orderState.getStatus());
		
		int status = 2;
		orderState=OrderState.getOrderStateByStatus(status);
		if(orderState!=null){	
			System.out.println("状态代码是"+status+"的订单状态是:"+orderState.getName());
		}else{
			System.out.println("订单状态不存在");
		}
		/****************/
	}
	
}

 运行结果:

 

今天是周六,可以睡懒觉!

12月,冬天,积蓄!

权限uri规则是:admin/article/update.do 权限的代码是:2

订单状态是:已收货 状态代码是:5

状态代码是2的订单状态是:正在配货

 

 

分享到:
评论

相关推荐

    JAVA枚举类型的用法详解

    JAVA枚举类型的用法详解 例举了JAVA 枚举类型常见用法

    Java源码查看枚举类型定义.rar

    Java源码查看枚举类型定义.rarJava程序设计经典300例

    Java中怎样由枚举常量的ordinal值获得枚举常量对象

    Java1.5提供了关键字enum,能够通过该关键字方便得定义自己须要的枚举类型,比方  enum Season {  SPRING, SUMMER, AUTUMN, WINTER  }  定义了一个季节枚举类型。  在本例中,对于Season.SPRING这个...

    java经典编程300例

    Java经典编程300例》内容包括java语言概述、eclipse开发工具、java语言基础、流程控制、数组及其常用操作、面向对象入门、面向对象进阶、字符串与包装类、java集合类框架、常用数学工具类、错误处理、输入/输出、...

    Java经典编程300例(完整版+源码

    枚举类型与泛型、 swing入门、 多线程、 网络通信和数据库操作。 本书所精选的实例都是一线开发人员在实际项目中所积累的,并进行了技术上的解析,给出了详细的实现过程。读者通过对本书的学习,能够提高开发的能力...

    JAVA经典编程300例

    Java经典编程300例》内容包括java语言概述、eclipse开发工具、java语言基础、流程控制、数组及其常用操作、面向对象入门、面向对象进阶、字符串与包装类、java集合类框架、常用数学工具类、错误处理、输入/输出、...

    Java+单例+多例+工厂+枚举+动态代理===》演示

    #### 例设计模式的类型 根据实例化对象的时机单例设计模式又分为以下两种: 1. 饿汉单例设计模式 2. 懒汉单例设计模式 多例设计模式案例演示 #### 多例设计模式的作用 多例模式,是一种常用的软件设计模式。通过多...

    Java5 枚举类详解及实例代码

    主要介绍了Java5 枚举类详解及实例代码的相关资料,枚举类是java5 新类型,全部都是类型安全的形式表示,需要的朋友可以参考下

    LearnJava:了解Java

    学习Java 了解有关JAVA for ME的信息! 指数 进阶主题 :ArrayList的差异之间的VS矢量 :可比较与比较器之间的区别 ...ThreadStatesEnum.java :枚举类型정리및枚举类型 JavaEnumExample.java :

    疯狂JAVA讲义

    学生提问:构造器是创建Java对象的途径,是不是说构造器完全负责创建Java对象? 141 5.5.2 构造器的重载 142 学生提问:为什么要用this来调用另一个重载的构造器?我把另一个构造器里的代码复制、粘贴到这个构造器...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例176 枚举类型的基本特性 225 实例177 增加枚举元素的信息 226 实例178 选择合适的枚举元素 227 实例179 高效的枚举元素集合 228 实例180 高效的枚举元素映射 229 实例181 遍历枚举接口的元素 230 实例182 简单的...

    java 面试题 总结

    Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byte...

    整理后java开发全套达内学习笔记(含练习)

    例: import java.io.InputStreamReader; import java.io.BufferedReader; class n{ public static void main(String[] args){ System.out.println("请输入一列文字,包括空格:"); BufferedReader s = new ...

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

     Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型 封装类 boolean Boolean char Character ...

    C#的简单 基本语法

    4、有枚举类型 5、代理和索引器 6、运算符重载 7、没有throws关键字 下面开始C#之行。 在开始学习C#之前,先了解下C#语句的特点: 1. C#是区别大小。2. 每一句都以分号结束,不象VB.NET。3. 多个语句通过...

    javascript模拟枚举的简单实例

    如下,我们来定义Week的枚举: 代码如下:if(typeof WeekDay == “undefined”){ var WeekDay = {}; WeekDay.Sunday = 0; WeekDay.Monday = 1; WeekDay.Tuesday = 2;...以定义DOM文档节点类型为例,定

Global site tag (gtag.js) - Google Analytics