`

java.lang.Enum的基本特性

阅读更多

1、enum的遍历和基本方法

package yingjun.enumeration;

enum Shrubbery { GROUND, CRAWLING, HANGING }

public class EnumClass {
  public static void main(String[] args) {
	//调用enum的value()方法可以遍历enum实例
    for(Shrubbery s : Shrubbery.values()) {
      System.out.println(s + " ordinal: " + s.ordinal()); //返回enum实例的次序
      System.out.println(s.compareTo(Shrubbery.CRAWLING) + " ");//比较
      System.out.println(s.equals(Shrubbery.CRAWLING) + " ");//比较
      System.out.println(s == Shrubbery.CRAWLING);//比较
      System.out.println(s.getDeclaringClass());//获取所属类
      System.out.println(s.name());//获取相应的enum实例 和toString()方法效果相同
      System.out.println("----------------------");
    }
    // 通过字符生成枚举类型
    for(String s : "HANGING CRAWLING GROUND".split(" ")) {
      Shrubbery shrub = Enum.valueOf(Shrubbery.class, s);
      System.out.println(shrub);
    }
  }
} 
GROUND ordinal: 0
-1 
false 
false
class yingjun.enumeration.Shrubbery
GROUND
----------------------
CRAWLING ordinal: 1
0 
true 
true
class yingjun.enumeration.Shrubbery
CRAWLING
----------------------
HANGING ordinal: 2
1 
false 
false
class yingjun.enumeration.Shrubbery
HANGING
----------------------
HANGING
CRAWLING
GROUND

  2、向enum中添加自己的方法

package yingjun.enumeration;

public enum OzWitch {
  //构建实例的通同时添加自身的描述
  WEST("Miss Gulch, aka the Wicked Witch of the West"),
  NORTH("Glinda, the Good Witch of the North"),
  EAST("Wicked Witch of the East, wearer of the Ruby " +"Slippers, crushed by Dorothy's house"),
  SOUTH("Good by inference, but missing");
  private String description;
  
  private OzWitch(String description) {
    this.description = description;
  }
  
  public String getDescription() { return description; }
  public static void main(String[] args) {
    for(OzWitch witch : OzWitch.values())
      System.out.println(witch + ": " + witch.getDescription());
  }
}

 

WEST: Miss Gulch, aka the Wicked Witch of the West
NORTH: Glinda, the Good Witch of the North
EAST: Wicked Witch of the East, wearer of the Ruby Slippers, crushed by Dorothy's house
SOUTH: Good by inference, but missing

  3、重写enum的toString()方法

//重写toString()方法
public enum SpaceShip {
  SCOUT, CARGO, TRANSPORT, CRUISER, BATTLESHIP, MOTHERSHIP;
  public String toString() {
    String newname = name();
    String lower = newname.substring(1).toLowerCase();
    return newname.charAt(0) + lower;
  }
  public static void main(String[] args) {
    for(SpaceShip s : values()) {
      System.out.println(s);
    }
  }
}

 

Scout
Cargo
Transport
Cruiser
Battleship
Mothership

   4、switch语句中的enum

 

package yingjun.enumeration;

enum Signal { GREEN, YELLOW, RED, }

public class TrafficLight {
  Signal color = Signal.RED;
 
  public String toString() {
    return "The traffic light is " + color;
  }
  public void change() {
		//编译器自动调用ordinal()产生整数的次序
	    switch(color) {
	      case RED:    color = Signal.GREEN;
	                   break;
	      case GREEN:  color = Signal.YELLOW;
	                   break;
	      case YELLOW: color = Signal.RED;
	                   break;
	    }
	  }
  public static void main(String[] args) {
    TrafficLight t = new TrafficLight();
    for(int i = 0; i < 7; i++) {
      System.out.println(t);
      t.change();
    }
  }
}

 

The traffic light is RED
The traffic light is GREEN
The traffic light is YELLOW
The traffic light is RED
The traffic light is GREEN
The traffic light is YELLOW
The traffic light is RED

    5、随机选取enum中的实例

 

package yingjun.enumeration;


import java.util.*;

public class Enums {
  private static Random rand = new Random(47);
  public static <T extends Enum<T>> T random(Class<T> ec) {
    return random(ec.getEnumConstants());
  }
  public static <T> T random(T[] values) {
    return values[rand.nextInt(values.length)];
  }
} 

 

package yingjun.enumeration;


enum Activity { SITTING, LYING, STANDING, HOPPING,
  RUNNING, DODGING, JUMPING, FALLING, FLYING }

public class RandomTest {
  public static void main(String[] args) {
    for(int i = 0; i < 20; i++)
      System.out.print(Enums.random(Activity.class) + "\n");
  }
} 

 

STANDING
FLYING
RUNNING
STANDING
RUNNING
STANDING
LYING
DODGING
SITTING
RUNNING
HOPPING
HOPPING
HOPPING
RUNNING
STANDING
LYING
FALLING
RUNNING
FLYING
LYING

 

3
2
分享到:
评论
2 楼 javatozhang 2013-06-28  
总结的很好一定会用到的。
1 楼 liushicheng1 2013-06-27  
总结的不错,很全面

相关推荐

    java官方中文API

    7. **枚举和注解**:Java 5引入了枚举和注解,API文档中也有详细的描述,例如`java.lang.Enum`是所有枚举类型的基类,`java.lang.annotation`包提供了注解的相关类。 8. **多线程**:Java提供了丰富的多线程支持,`...

    JAVA中文API文档

    12. **枚举(Enum)**: `java.lang.Enum`提供了枚举类型的支持,枚举常量可以拥有方法和属性,使得常量集合更易于管理。 通过深入学习这份中文API文档,你可以全面掌握Java平台的核心功能,无论你是初学者还是有...

    JAVA-API.zip_java api

    "JAVA-API.zip"的压缩包可能还包含了其他高级特性的文档,如反射(java.lang.reflect)、注解(java.lang.annotation)、泛型(generics)、枚举(enum)以及Lambda表达式等。这些内容是Java 5及以后版本引入的,极...

    JAVA API官方文档中文版

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

    Java枚举类型Enum的用法

    枚举默认继承`java.lang.Enum`类,因此它们不能直接继承其他类,但可以实现接口。这使得枚举可以具有特定的行为。 6. **枚举常量的遍历** 可以通过for-each循环遍历枚举的所有实例,如: ```java for (Color ...

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

    在这里,`Color`是枚举类型,`RED`, `GREEN`, `BLUE`是枚举的实例,它们默认继承自`java.lang.Enum`类。 2. 访问枚举实例: 你可以通过枚举类型直接访问其实例,例如: ```java Color color = Color.RED; ``` 3. ...

    API.rar_Chinese jav_Javaapi _chinesejav_jav chinese_javaAPI中文文档

    1. **基础类库**:这是Java API的核心,包括了`java.lang`、`java.io`、`java.util`等包,提供了基本的数据类型、字符串处理、输入/输出、集合框架等功能。`java.lang`是所有Java程序的基础,包含了一些基础类如`...

    java-api的html版

    8. **枚举和注解**:Java 5引入了枚举和注解,API文档也对这些新特性进行了详细解释,如`java.lang.Enum`作为所有枚举类型的基类,`java.lang.annotation`包下的注解接口。 9. **并发编程支持**:Java API提供了...

    javaenum(枚举)使用详解+总结.pdf

    枚举在Java中被设计为一种特殊的类,它们默认继承自`java.lang.Enum`抽象类,并且是单继承的,这意味着它们无法再继承其他类,但可以实现多个接口。下面我们将深入探讨enum的使用方法、特性以及常见的操作。 1. **...

    Java中的枚举类型Enum示例源代码

    下面将详细探讨`Enum`的基本概念、用法以及一些高级特性。 首先,枚举类型`Enum`的定义方式如下: ```java public enum Color { RED, GREEN, BLUE } ``` 这里,`Color`是枚举类型名,`RED`, `GREEN`, `BLUE`是...

    JAVA-API.rar_Java API文档·_Java api文档_java api

    4. **包结构**:Java API按照包来组织类,如`java.lang`包含基本类型和系统相关的类,`java.util`包含集合框架和其他实用工具类,`java.io`处理输入输出,`java.net`处理网络通信等。理解这些包的结构有助于更好地...

    JAVA帮助文档(CHM格式,下载就能看,不用安装其他阅读软件)

    5. **枚举和注解**:Java 5引入了枚举和注解,这些在API文档中也有详细介绍,例如`java.lang.Enum`表示枚举类型,`java.lang.annotation.Annotation`是注解的基类。 6. **异常处理**:Java API文档也涵盖了所有的...

    JAVA API中文文档

    1. **基础类库**:包括`java.lang`包,这是所有Java程序的基础,包含了如`Object`、`String`、`System`等基本类型和工具类。`java.io`包提供了输入输出流,用于文件操作和数据传输。`java.util`包则包含集合框架、...

    Java中的Enum的使用与分析

    本文将深入探讨Java中`Enum`的基本概念、特性以及如何使用。 #### 二、基本语法与特点 ##### 1. 枚举的基本定义 枚举类型的定义类似于类的定义,但必须使用`enum`关键字。例如: ```java public enum Color { RED...

    JAVA高级编程中Enum枚举

    1. **预定义的方法**:每个枚举类型都自动继承了`java.lang.Enum`类,因此它们拥有`toString()`、`compareTo()`等方法。 2. **唯一性**:枚举实例的创建是在编译时完成的,确保了每个枚举值的唯一性。 3. **安全性**...

    Java_java.zip

    15. ** Lambda表达式** (lambda expressions):Java 8引入的新特性,简化了函数式编程,如`(int a, int b) -&gt; a + b`。 在开发Java项目时,开发者会使用集成开发环境(IDE),如Eclipse、IntelliJ IDEA或NetBeans,...

    java中enum枚举的详细用法

    Java中的枚举(enum)类型是在JDK 1.5版本引入的一个强大的特性,它用于定义一组相关的常量。在C/C++等语言中,枚举通常用来表示一组具有固定值的常量集合,但在Java中,枚举不仅限于此,它提供了更多的功能和灵活性...

    java enum 枚举 学习资料

    Enum 枚举类型是 Java 5 中引入的一种新特性,旨在解决传统的 int 枚举常量的缺陷。 1. 枚举语法 在 Java 中,枚举类型是用 enum 关键字来定义的。枚举元素列表必须写在枚举类的最前面,每个元素之间用逗号隔开,...

    j2se api中文版

    例如,`java.lang`包提供了基本类型转换和运行时异常处理;`java.util`包提供了各种实用工具类,如日期时间、集合和映射;`java.io`包提供了输入/输出功能,而`java.net`包则支持网络通信。 2. **反射(Reflection...

    android gson 混淆代码 问题

    在Android开发中,Gson库是一个非常常用的工具,它由Google提供,用于将Java对象转换为JSON字符串,反之亦然。然而,在混淆代码时,可能会遇到一些问题,导致Gson无法正常工作。本文将深入探讨这些问题及其解决方案...

Global site tag (gtag.js) - Google Analytics