`

例说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枚举类型 enum 应用详解

    你可以通过枚举类型直接访问其实例,例如: ```java Color color = Color.RED; ``` 3. 枚举常量的顺序: 枚举常量的顺序与它们在声明时的位置相同,从上到下,可以用于遍历枚举。 二、枚举的方法 1. `values()`...

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

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

    Java常用类和枚举类型.pdf

    以Integer类为例,它就是int基本数据类型的包装类。Integer类提供了两种构造方法:一种是以int类型的变量作为参数,另一种是以String类型的变量作为参数来创建Integer对象。例如,使用int类型的参数创建Integer对象...

    Java100例 Java100例

    "Java100例"是一个全面的学习资源,旨在通过实际示例帮助初学者和有经验的开发者深入理解Java的核心概念和技术。这个压缩包可能包含了100个不同的Java代码实例,覆盖了从基础语法到高级特性的各个方面。以下是一些...

    java编程200例(附:JAVA文档完全解读中文版)

    10. **枚举与注解**:枚举类型的使用,注解在元数据中的应用。 11. ** Lambda表达式和函数式编程**:Java 8引入的新特性,简化了代码,提高了可读性。 12. **JavaFX**:用于创建桌面图形用户界面的库。 配合"JAVA...

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

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

    Java编程100例_java100例_

    总的来说,"Java编程100例"是一个全面的学习资源,它不仅包含了大量的示例代码,还涵盖了实际编程中可能遇到的各种情况。通过这些实例,你可以逐步提升自己的编程能力,理解并掌握Java语言的精髓。在学习过程中,...

    java经典编程300例

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

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

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

    Java的枚举类型使用方法详解

    总结来说,Java的枚举类型为开发者提供了一种强大且类型安全的方式来表示一组有限的、不可变的值。它简化了代码,提高了可读性,并允许进行更多的类型检查和错误预防。在编写涉及固定选项或状态的代码时,枚举类型...

    JAVA经典编程300例

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

    JAVA 2应用编程150例

    12. **枚举类型**:Java 5引入的枚举类型,提供了一种更安全、更规范的方式来表示有限的、固定的值集。 13. **泛型**:泛型增加了类型安全性,允许在编译时检查类型,减少类型转换的错误。 14. **注解(Annotation)...

    java100例,java的经典例子

    "java100例"提供了一百个Java编程实例,涵盖了基础到应用的多个方面,对于学习和理解Java语言有着极大的帮助。下面我们将深入探讨这些知识点。 1. **Java基础语法**:Java的基本数据类型(如int、float、boolean等...

    Java5 枚举类详解及实例代码

    Java 5 引入的枚举类型(enum)是面向对象编程中的一种重要特性,它为表示一组固定值提供了类型安全且强大的方式。在本文中,我们将深入探讨枚举类的概念、用法以及其与传统常量定义的区别。 1. 枚举类的定义与常量...

    JAVA编程五十例例

    Java编程五十例是一个精心设计的学习资源,旨在帮助中高级学习者深入理解并熟练掌握Java编程语言。这个集合包含了50个不同的编程实例,涵盖了Java语言的核心概念和实用技巧。通过这些实例,学习者可以逐步提升自己的...

    JAVA经典100例

    "JAVA经典100例"这个压缩包文件无疑为初学者和有经验的开发者提供了一条深入理解JAVA语言的有效途径。这些例子涵盖了JAVA语言的基础概念、核心特性以及实际应用,旨在帮助用户巩固基础,提升解决问题的能力。 1. **...

    java编程100例

    10. **枚举与注解**:枚举类型提供了一种安全的方式来表示固定的常量集合,注解则可以用来提供元数据,增强代码的可读性和可维护性。 11. **IO和NIO**:Java NIO(New IO)提供了一种非阻塞的I/O模型,对于高并发的...

    JAVA经典实例100例

    15. **枚举类型**:Java 5引入了枚举,用于定义一组固定值,实例会展示枚举的定义和使用。 通过这些实例,新手不仅能学习到Java的基本语法,还能了解到Java的高级特性和实际应用。在实践中不断摸索和尝试,是成为...

    Java编程300例.rar

    【Java编程300例】是一份集合了Java编程实践中300个典型示例的资源包,旨在帮助初学者和进阶者更好地理解和掌握Java编程语言的核心概念、语法以及常见问题的解决方法。这份资源可能包括从基础的变量定义、数据类型到...

    Java典型应用彻查1000例第一卷:Java入门(源码.PPT.习题)

    本资料集围绕"Java典型应用彻查1000例第一卷:Java入门"的主题,提供了丰富的学习资源,包括源码、PPT和习题,旨在帮助初学者扎实地掌握Java基础知识,并逐步提升至中级和高级水平。 《Java私塾》系列涵盖了初级、...

Global site tag (gtag.js) - Google Analytics