`
zhaolei415
  • 浏览: 168652 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java枚举

阅读更多
4,java枚举
首先我们说为什么要用枚举(什么时候用它)?
答:让某个类型变量的取值只能为若干固定值中的一个否则编译器就会报错。
以前没有枚举类的时候我们咋办的了?
答:(1)私有的构造函数(2)每个元素用公有的静态成员变量表示并且调用私有构造函数
例子:
    final class Season
      {public static final Season SPRING=new Season();
        public static final Season WINTER=new Season();
        public static final Season SUMMER=new Season();
        public static final Season AUTUMN=new Season();
        private Season(){...}
      }


enum很像特殊的class,实际上enum声明定义的类型就是一个类。而这些类都是类库中Enum类的子类(java.lang.Enum<E>)。它们继承了这个Enum中的许多有用的方法
	public enum Color{   
	    RED,BLUE,BLACK,YELLOW,GREEN   
	}  

1、Color枚举类是特殊的class,其枚举值(RED,BLUE...)是Color的类对象(类实例):
                      Color c=Color.RED;
    而且这些枚举值都是public static final的,也就是我们经常所定义的常量方式,因此枚举类中的枚举值最好全部大写。
2、即然枚举类是class,当然在枚举类型中有构造器,方法和数据域。但是,枚举类的构造器有很大的不同:
      (1) 构造器只是在构造枚举值的时候被调用。
enum Color{   
	                RED(255,0,0),BLUE(0,0,255),BLACK(0,0,0),YELLOW(255,255,0),GREEN(0,255,0);   
	                //构造枚举值,比如RED(255,0,0)   
	                private Color(int rv,int gv,int bv){   
	                 this.redValue=rv;   
	                 this.greenValue=gv;   
	                 this.blueValue=bv;   
	                }   
	  
	                public String toString(){  //自定义的public方法   
	                return super.toString()+"("+redValue+","+greenValue+","+blueValue+")";   
	                }   
	      
                       private int redValue;  //自定义数据域,private为了封装。   
	                private int greenValue;   
	                private int blueValue;   
	 }  

(2) 构造器只能私有private,绝对不允许有public构造器。这样可以保证外部代码无法新构造枚举类的实例。这也是完全符合情理的,因为我们知道枚举值是public static final的常量而已。 但枚举类的方法和数据域可以允许外部访问。
	public static void main(String args[])   
	{   
	        // Color colors=new Color(100,200,300);  //wrong   
	           Color color=Color.RED;   
	           System.out.println(color);  // 调用了toString()方法   
	} 


3、所有枚举类都继承了Enum的方法。
4、枚举类可以在switch语句中使用。
	Color color=Color.RED;   
	switch(color){   
	        case RED: System.out.println("it's red");break;   
	        case BLUE: System.out.println("it's blue");break;   
	        case BLACK: System.out.println("it's blue");break;   
	} 

特别指出:如果枚举类中只有一个枚举值的话那么就和单例模式有异曲同工之妙了。
附件是一个文档是从百度文库中整出来的,本文参考了其中的内容。







0
1
分享到:
评论
2 楼 teacherzhu 2014-07-24  
http:/http://www.iteye.com/images/smiles/icon_wink.gif/www.iteye.com/ihttp:http://www.iteye.com/images/smiles/icon_arrow.gif//www.iteye.com/images/smiles/icon_rolleyes.gifmages/smiles/icon_cry.gihttp://www.iteye.com/images/smiles/icon_sad.giffhttp://www.iteye.com/images/http:/http://www.iteye.com/images/smiles/icon_idea.gif/www.iteye.com/images/smiles/icon_question.gifsmiles/icon_redface.gif
1 楼 happylouis 2013-09-02  
写的到位,明白

相关推荐

    java枚举实例代码

    Java枚举(enum)是Java语言中的一种特殊数据类型,用于定义一组有限的常量,这些常量在程序中作为固定的值使用。枚举在Java中被引入,目的是为了更好地管理和使用常量,提高代码的可读性和安全性。在本实例代码中,...

    Java枚举类型Enum的用法

    Java枚举类型(Enum)是Java SE 5.0引入的一种新的数据类型,它为开发者提供了更为强大且安全的方式来表示一组常量。枚举在Java中不仅是一个类,还是一种特殊的类型,允许我们定义自己的常量集合。接下来,我们将...

    java枚举类型说明

    ### Java枚举类型详解 #### 一、引言 在Java编程语言中,枚举(Enum)作为一种重要的数据类型,在程序设计中扮演着不可或缺的角色。本文将深入探讨Java枚举类型的特性和用法,并通过具体实例说明其优势所在。枚举...

    简单总结java枚举类型

    Java枚举类型是Java语言中一种特殊的类,用于定义固定的常量集合,它提供了一种安全、类型化的方式来表示一组有限的值。枚举在Java中被引入为一个完整的类型,不同于C++中的枚举,这使得Java枚举更加强大且易于使用...

    java枚举状态机

    Java枚举(Enum)状态机是一种使用枚举类型来实现状态转换逻辑的编程技术,它在Java编程中被广泛应用于管理对象的状态变化。状态机是一种模型,用于描述一个系统或对象在不同时间点可能存在的状态以及如何从一个状态...

    java枚举结果类、根据状态值获取枚举值

    java枚举结果类、根据状态值获取枚举值 Controller: /** 模块类型枚举 */ model.addAttribute("mType", ModuleTypeEnum.ModuleTypeShow()); ftl: value="${mType.key}:${mType.value}” &lt;/#list&gt;

    java枚举类用法

    Java枚举类型(enum)是Java语言中一种特殊的类,用于定义一组固定的常量。它在许多场景下作为替代常量或单例模式的选择,提供了更安全、更易读的代码。下面我们将深入探讨Java枚举类的用法及其优势。 1. **枚举的...

    高阶Java-Java枚举类型 enum 应用详解

    本篇文章将深入探讨Java枚举的特性、用法以及如何在实际开发中充分利用它们。 一、枚举的基本用法 1. 声明枚举类型: ```java public enum Color { RED, GREEN, BLUE } ``` 在这里,`Color`是枚举类型,`RED`, `...

    理解java枚举类型

    Java枚举类型是Java语言中的一种特殊的类,用于定义一组固定的常量集合。它在Java中扮演着重要的角色,提供了一种安全、类型化的常量表示方式,比传统的final static变量更具有优势。理解Java枚举类型对于编写高质量...

    列举java 枚举相关信息

    ### Java 枚举类型详解 #### 一、引言 ...通过以上的介绍,我们可以看到Java枚举类型不仅提供了类型安全的保障,还为开发者带来了极大的灵活性。合理地使用枚举类型,可以显著提高代码的质量和可维护性。

    Java枚举类型.pdf

    在本文中,我们将深入探讨Java枚举的定义、使用方法以及它如何改善传统使用`static final`常量的模式。 首先,让我们看看传统的`static final`常量表示枚举的方式。例如,清单1展示了如何使用`public static final`...

    java枚举的一个实例

    Java枚举是编程语言Java中的一个特色特性,它在类、接口和变量的定义中扮演着特殊的角色。枚举在Java中被用作一种数据类型,用于定义一组固定的常量,这些常量可以代表特定的值或状态。通过枚举,我们可以确保变量...

    如何使用Java枚举类型

    一个关于JAVA枚举类型的MHT文件,包含JAVA枚举类型的用法,以及JDK版本的问题。

    java枚举ppt和详细代码

    Java枚举是面向对象编程中的一个重要特性,它用于定义固定的常量集合,这些常量通常代表某种特定的数据类型。在Java中,枚举提供了一种更安全、更规范的方式来处理常量,相比于传统的final static变量,枚举具有更多...

    Java枚举与设计模式

    本文详尽地论述了Java枚举与设计模式的关系

    java枚举,以及自己总结的两个示例.xmind

    如有侵权请联系删除,欢迎批评指正 java枚举,起初在网上抄了一部分,然后自己加了点示例,做一个记录,也算是为以后留个备份,技术小白一个,还在努力成长

    java枚举类的属性、方法和构造方法应用实战

    Java 枚举类的属性、方法和构造方法应用实战 Java 枚举类是一种特殊的类,它拥有自己的属性、方法和构造方法。本文将详细介绍 Java 枚举类的属性、方法和构造方法应用实战,结合实例形式分析了 Java 枚举类的定义、...

    JAVA枚举类型的用法详解

    下面我们将深入探讨Java枚举类型的常见用法。 首先,枚举类型在本质上等同于定义了一组静态常量。创建枚举类型的语法如下: ```java public enum Belle { para1, para2, para3, para4; } ``` 这会创建一个名为`...

    深入理解 Java 枚举(枚举的方法+枚举的特性+枚举可以实现接口+组织枚举+策略枚举+枚举工具类等)

    深入理解 Java 枚举 Java 枚举是 Java 语言中的一种特殊类型,自 JDK 5 开始引入,使用 enum 关键字修饰。在 Java 中,枚举是一种受限制的类,具有自己的方法。枚举的本质是 java.lang.Enum 的子类,它提供了一些...

    全面掌握java枚举类型(enum-type)1

    全面掌握 Java 枚举类型(enum type) Java 枚举类型是一种特殊的数据类型,它可以取有限个数的明确值。枚举类型的引入解决了 int 枚举模式和 String 枚举模式的缺点,提供了类型安全性、可读性和性能等优势。 ...

Global site tag (gtag.js) - Google Analytics