`
凤凰山
  • 浏览: 148179 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Java枚举的几种操作方法

阅读更多

Jdk 1.5后来了个哥们叫 enum 平时也用着,但也未做个总结啥地,今儿个同事问我如何用,就整理了下。

 

枚举其实就是一种类型,跟int, char 这种差不多,就是定义变量时限制输入的,你只能够赋enum里面规定的值。

 

定义枚举 方法很简单,就跟定义一个类一样,只是把class换成 enum,其他的,你懂地。e.g:

 

public enum WorkDay{
    Monday,Tuesday,Wednesday,Thurday,Friday;//定义时,枚举值间有逗号隔开,最后用分号结束
  }

 

废话不多说,直接上main 方法,拿去玩玩吧:

 

public static void main(String []args)
{
         /**
             * 枚举类型是一种类型,既然是类型,就是跟int,char他们 一样的,
         * 拿来定义变量,限制你对变量的赋值,就像 int a,你不能够给a一个 string的值
         * 同理,一个枚举用来定义一个变量时,你只能够赋枚举值,其方式为
         * "枚举名.值"
            */
	WorkDay  myworkday=WorkDay.Wednesday;   
         /** 补充点switch的基础知识,switch语句括号中支持byte \short \char \int类型,
       * jdk 1.5以后支持枚举,所以,这里可以直接使用枚举变量myworkday。
       * 呵呵,在jdk1.7后将switch将支持string
          */  
      switch (myworkday)
        {     

          /*枚举重写了toString()方法,所以枚举变量的值不带前缀
          * myworkday 里面的值应该是枚举括号里面的那几个
          */
        case Monday:
                          System.out.println("you work day is Monday !");
            break;
        case Tuesday:
                        System.out.println("you work day is Tuesday!");
            break;
        case Wednesday:
                        System.out.println("you work day is Wednesday !");
            break;
        case Thurday:
                        System.out.println("you work day is Thurday !");
            break;
        case  Friday:
               	 System.out.println("you work day is Friday !");
             break;
        }
	System.out.println("--------遍历所有值----------");
	//----使用values()方法返回一个数组
	
	for(WorkDay day:WorkDay.values())
	{		
		System.out.println(day);
	}
	//-----既然是数组,就可以统计大小
	System.out.println("WorkDay 里面有   "+WorkDay.values().length+" 个元素");
               //--------------------调用 ordinal()方法,返回枚举值在枚举中的索引,数组索引嘛,当然从0开始
	System.out.println(WorkDay.Monday.ordinal());
	System.out.println(WorkDay.Friday.ordinal());
             //---默认实现java.lang.Comparable接口 ,测试测试
	System.out.println(WorkDay.Monday.compareTo(WorkDay.Thurday));//结果应该是 -3
	//---Monday的索引为0,Thurday为 3,0-3=-3,
	System.out.println(WorkDay.Friday.compareTo(WorkDay.Tuesday));//同理,结果应该为4-1=3,
	
}

 

简单吧,来点狠的,前面说了,枚举有点像类,只是把class换成了enum,那么它跟一般的类一样可以添加属性或方法。

 

  public enum WeAreJavaer{      
        chinese,java, spring, DB2, AIX; // 枚举列表,必须写在最前面,否则编译出错
        private final static String location = "javaeye";      //定义一个属性
        public static WeAreJavaer getInfomation() {         
         WeAreJavaer flag=null;
            if (location.equals("javaeye"))
              {
             flag=java;             
              }
            else
             { 
             flag= chinese;
             }
              return flag;
            }
    } 

老规矩,直接上main()方法测试:

 

写道
public static void main(String []ags)
{
System.out.println("---------------------测试调用枚举中写的方法-------------------------------");
System.out.println("直接调用枚举里面的方法: "+ WeAreJavaer.getInfomation());
}

 

3、来点更狠的。

 

 你可以通过括号来给enum赋值,这样的话,你必须有带参的构造方法,还需要有一属性与方法,否则编译时会出错。

 另外,你如果给enum里面的元素赋值的话,要么都赋,要么都不赋,不要东赋一个,西赋一个。

 如果不赋值则不能写构造方法,如果你赋值了,而没有构造方法,编译还是通不过,废话不多少,来,看:

 

	 public enum People {	     
	        xiaowang(20), xiaozhang(32),xiaoli(50), xiaogou(21); 
	       private final int age;   
	       
	        People(int value) { //构造器只能是默认或者private, 从而保证构造函数只能在内部使用
	            this.age = value;
	        }
	        public int getAge() {
	            return age;
	        }
	    }

 

好吧,啥也不说了,接下来的事,你懂地:

 

  public static void main(String[] args) {
	        for(People people:People.values()){
	            /*通过getValue()取得相关枚举的值*/
	            System.out.println(people+" 的年龄 :"+people.getAge());
	        }
	    }

 

 

 

 

 

 

 

 

 

2
1
分享到:
评论

相关推荐

    java枚举状态机

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

    列举java 枚举相关信息

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

    java枚举类型优秀源代码

    它能够提高代码的可读性和可维护性,并且Java中的枚举提供了一些内置的方法来帮助我们更好地管理和操作这些常量。 #### 特性 - **语法格式**:定义枚举的基本语法如下: ```java public enum Color { RED, GREEN...

    Java高新技术_java5的枚举的基本应用

    Java枚举可以实现接口,也可以拥有字段和方法,因此可以用来创建复杂的枚举集。例如,可以定义一个表示星期几的枚举,并为每个枚举值添加额外的属性或行为: ```java public enum DayOfWeek implements Comparable...

    java枚举的一个例子

    ### Java枚举详解 在Java编程语言中,枚举(`enum`)是一种特殊的类,用于定义一组固定的常量值。这些常量值通常代表了一组预定义的选项或者状态,比如颜色、方向等。使用枚举可以提高代码的可读性和可维护性,并且...

    在Java中使用枚举

    除了标准的枚举定义,Java还有几种“准枚举”类型,例如: - **常量定义**:在Java 5之前,通常使用静态常量来模拟枚举,如描述中所示。 - **单例类**:通过创建只包含静态成员的类,可以实现类似枚举的行为,但...

    Java关于中文乱码问题的多种解决方法

    本文将深入探讨几种解决Java中中文乱码问题的方法,并以MyEclipse为开发环境,结合实际示例进行讲解。 1. 文件读写中的乱码: 当Java程序读取或写入包含中文字符的文件时,需要设置正确的字符编码。例如,使用`...

    JAVA:使用枚举

    在Java编程语言中,枚举是一种特殊的类类型,用于定义一组预定义的值。尽管Java在早期版本中并未直接支持枚举,但在Java 5及以后版本中引入了枚举类型,以满足开发者对于类型安全和高效代码的需求。以下是对枚举类型...

    枚举(switch、覆盖枚举、实现接口等)

    枚举在Java编程语言中是一种强大的工具,它允许开发者定义一组相关的常量,并且提供了许多超越普通常量的功能。在JDK 1.5引入枚举类型后,它成为了一种更加灵活和可读的代码表示方式。以下将详细介绍枚举的几个主要...

    java的几种设计模式

    下面,我们将深入探讨几种重要的Java设计模式。 1. **单例模式**:保证一个类只有一个实例,并提供全局访问点。这种模式常用于配置中心、线程池等需要全局共享的对象。实现方式有懒汉式(线程不安全)、饿汉式...

    java使用stream流处理枚举信息的代码实例

    枚举在Java中是一种特殊的类,用于定义一组相关的常量。它们通常用于表示固定的、有限的值集合,如星期几、颜色等。在Java中,枚举可以通过`enum`关键字来创建。例如: ```java public enum Weekdays { MONDAY, ...

    枚举类型与构造函数.doc

    枚举类型是一种特殊的数据类型,它可以在程序中定义一组固定的常量,例如星期几、颜色、性别等。在Java中,枚举类型可以使用enum关键字来定义。枚举类型的优点是可以避免使用 MAGIC NUMBER,提高代码的可读性和维护...

    495.493.JAVA基础教程_枚举类与注解-每天一考(495).rar

    Java提供了几种内置的注解,如`@Override`、`@Deprecated`和`@ SuppressWarnings`。同时,开发者也可以自定义注解,通过定义注解处理器来实现特定的行为。 `@Override`用于标记一个方法,表示该方法是重写父类中的...

    实例181 - 遍历枚举接口的元素

    在Java中,遍历枚举接口的元素通常有以下几种方式: 1. 使用for-each循环: 这是最常用的方法,它简洁且易于理解。例如,如果有一个名为`MyEnum`的枚举类型,我们可以这样遍历: ```java for (MyEnum e : MyEnum....

    详谈Java枚举、静态导入、自动拆装箱、增强for循环、可变参数

    "Java枚举、静态导入、自动拆装箱、增强for循环、可变参数详解" 一、枚举简介 枚举是一种特殊的类型,可以限定一个变量的取值范围,使其只能是固定的几个值。枚举的优点是可以使代码更加简洁、可读性强、提高安全...

    Java常用类及集合操作

    集合框架主要包括以下几种主要类型的集合: - **列表(List)**:有序集合,允许重复元素。 - **集(Set)**:无序且不允许重复元素的集合。 - **映射(Map)**:存储键值对的数据结构。 ##### 2.2 List List接口...

    Java API_5.0中文版

    掌握这些集合类的特性和操作方法,能够有效地组织和管理数据。 以上只是Java API 5.0中的一部分核心知识点,实际的学习过程中,还需要深入研究每个类和接口的功能,熟悉它们的API用法,并通过实践来加深理解。阅读...

    java仿枚举实例

    在Java编程语言中,枚举(Enum)是一种特殊的类,用于定义一组固定的常量。它在许多场景下非常有用,例如表示有限的状态集合或者固定的值。然而,在Java 5之前的版本中,没有内置的枚举类型,程序员们需要通过一些...

    java 参考手册 (.chm)

    1. **类和接口**:手册详细列出了所有公共类和接口,如`java.lang.Object`(所有类的基类)、`java.util.ArrayList`(一种动态数组实现)和`java.io.File`(用于文件操作)。每个类或接口都有其构造函数、方法和字段...

    JAVA API官方文档中文版

    5. **枚举和注解**:Java 5引入了枚举和注解,这些在API文档中也有详尽的解释,如`java.lang.annotation`包下的注解类型,以及`java.lang.Enum`作为所有枚举类型的基类。 6. **附录**:通常包括一些补充信息,如...

Global site tag (gtag.js) - Google Analytics