`

java中的枚举

阅读更多

在java性能调优中经常要把字符串匹配转换为枚举型匹配。

 

介绍:

java.lang.Enum是JDK5.0版本新加入的类,我们所编写的枚举其实都是隐式的继承自它,既然它是类,因此会有类型安全性、编译期检查以及可将它用在变量声明中的能力。这可以把使用数值或字符串来模拟含义的常量彻底打败,枚举中的各个实例(值)都是被隐式声明为public static final的,而且你也不能将这些声明手动赋予给实例(值),编译器会自己处理。所以比较Enum实际是比较int型,比String快。

 

特点:

 

◆类型安全(Type Safety)
◆紧凑有效的枚举数值定义(Compact, Efficient Declaration of Enumerated Values)
◆无缝的和程序其它部分的交互操作(Seamless integration with other language features)
◆运行的高效率(Runtime efficiency)

 

适用场景:

程序中有字典组件,这些字典组件可以定义Enum型,运行比String快(起初用String是因为他能表达语言含义,容易阅    读程序,而Enum型坚固快和见其名知其意)。

 

应用实例:

 

简单使用:

 

/**
 * 颜色的枚举
 * @author David Day
 */
public enum ColorEnum {
	
	/**
	 * 红色
	 */
	RED,
	/**
	 * 绿色
	 */
	GREEN,
	/**
	 * 蓝色
	 */
	BLUE;

	public static void main(String[] args) {
		// 获得枚举实例序号
		int index = RED.ordinal();RED.compareTo(RED);
		// 返回所有的枚举实例
		ColorEnum[] colors = ColorEnum.values();
		// 获得实例的名称
		String colorName = GREEN.name();
		// 通过实例名称来获得枚举实例
		ColorEnum color = ColorEnum.valueOf(colorName);
		/* 比较两个枚举的方法一
		 * 比较方式是比较枚举的ordinal
		 */
		int compare = BLUE.compareTo(BLUE);
		/* 比较两个枚举的方法二
		 * 枚举支持直接用这种逻辑表达式方式作比较
		 */
		boolean isEqual = RED == GREEN;
		// 枚举支持直接用switch作选择
		switch (BLUE) {
			case RED: break;
			case GREEN: break;
			case BLUE: break;
			default: break;
		}
	}

}

 

复杂高级使用:

 

import java.awt.Color;
import java.io.Serializable;

/**
 * 颜色的枚举
 * 是能实现接口
 * 不能继承
 * @author David Day
 */
public enum ColorEnum implements Serializable {
	
	/**
	 * 红色
	 */
	RED(255, 0, 0) {
		
		@Override
		public void doSomeThing() {
			System.out.println(name());
		}
		
	},
	/**
	 * 绿色
	 */
	GREEN(0, 255, 0) {
		
		@Override
		public void doSomeThing() {
			System.out.println(ordinal());
		}
		
	},
	/**
	 * 蓝色
	 */
	BLUE(0, 0, 255) {
		
		@Override
		public void doSomeThing() {
			System.out.println(toString());
		}
		
	};
	
	/**
	 * 颜色
	 */
	private Color color;

	/**
	 * 实例化颜色枚举
	 * 枚举字段的实例化将会调用这个构造方法
	 * 必须用private修饰
	 * 代表只有本枚举自己能够构造
	 * 枚举的实例都是静态的
	 * 会在第一次访问的时候就生成
	 * @param r 红色
	 * @param g 绿色
	 * @param b 蓝色
	 */
	private ColorEnum(int r, int g, int b) {
		this.color = new Color(r, g, b);;
	}

	/**
	 * @return 颜色实体
	 */
	public Color getColor() {
		return color;
	}
	
	/**
	 * 定义抽象方法
	 * 实例必须实现它
	 */
	abstract void doSomeThing();
	
	public static void main(String[] args) {
		Color color = RED.getColor();
		GREEN.doSomeThing();
	}

}
 

 

分享到:
评论

相关推荐

    Java中枚举类型的使用.docx

    ### Java中枚举类型的使用详解 #### 一、引言 在软件开发过程中,经常会遇到需要定义一组固定的常量的情况,比如系统中的状态值、选项等。这些常量的定义方式直接影响到代码的可读性、可维护性和扩展性。在Java...

    java中枚举的使用

    在枚举中,我们可以定义方法,这些方法可以是抽象的,也可以包含具体实现。例如,我们可以定义一个返回枚举常量名称的方法: ```java public enum Color { RED, GREEN, BLUE; public String getName() { return...

    说说Java中的枚举 转 可以了,够了 包括EnumSet(Map)

    这篇博客将深入探讨Java枚举的特性和使用方法,包括`EnumSet`和`EnumMap`这两个与枚举相关的数据结构。 首先,枚举定义的基本语法是`public enum EnumName {constant1, constant2, ...}`。每个枚举常量都是`...

    java中枚举的详细使用介绍

    - `compareTo`:比较枚举实例的顺序,基于它们在枚举中的定义顺序。 - `name`:返回枚举实例的名称,通常与定义时的标识符相同。 - `ordinal`:返回枚举值在枚举中的索引,从0开始。 - `toString`:返回枚举实例的...

    Java中枚举的应用.docx

    Java中的枚举是一种特殊的类,它提供了一种安全的...枚举的使用应当遵循良好的编程实践,如避免在枚举中包含过多的业务逻辑,保持枚举常量的简洁性,以及利用枚举提供的各种方法和特性来提升代码的可读性和可维护性。

    Java中枚举类型的一种使用方式

    "Java中枚举类型的一种使用方式" Java中枚举类型是一种非常有用的技术,它可以帮助我们简化代码,提高代码的可读性和可维护性。在本文中,我们将通过一个实际例子来介绍Java中枚举类型的一种使用方式。 首先,让...

    在Java中使用枚举

    - Java中的枚举定义非常简洁,可以直接在枚举中定义值: ```java public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY; } ``` - 与C++中的枚举不同,Java枚举默认是单例的,...

    java 中枚举类enum的values()方法的详解

    Java 中枚举类 enum 的 values() 方法详解 Java 中的枚举类 enum 是一种特殊的类,通过使用 enum 关键字来定义。枚举类 enum 中有一个特殊的方法,values(),这个方法可以将枚举类转换为一个枚举类型的数组。通过...

    java枚举实例代码

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

    Java 中枚举类型简介与使用

    枚举简介 适用于初学Java

    java enum 枚举 学习资料

    Java Enum 枚举学习资料是 Java 编程语言中的一种特殊类型,它主要用来实现一组固定的常量。 Enum 枚举类型是 Java 5 中引入的一种新特性,旨在解决传统的 int 枚举常量的缺陷。 1. 枚举语法 在 Java 中,枚举类型...

    enums-examples:Java 中枚举的高级使用示例

    在Java编程语言中,枚举(enum)是一种特殊的类,用于定义一组固定的常量。它在许多场景下比使用常量或int类型的硬编码值更安全、更具可读性。本篇文章将深入探讨Java中枚举的高级用法,通过实际示例帮助你更好地...

    java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名

    枚举(Enumeration)是Java中的一个特殊类类型,用于定义一组常量。本项目"test-enum-demo-master"显然是一个用于演示如何通过反射来操作枚举类的示例。 首先,让我们理解枚举类的基本概念。枚举类在Java中用于定义...

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

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

    Java面试枚举从使用到原理

    本篇文章将深入探讨Java枚举的使用及其背后的原理。 一、枚举的定义与使用 1. 基本用法: 在Java中,枚举可以通过`enum`关键字来创建。例如,我们可以定义一个表示一周七天的枚举类型: ```java public enum ...

    Java枚举类型Enum的用法

    在枚举内部,可以通过`Enum<E extends Enum<E>>`的泛型方法`getDeclaringClass()`获取枚举常量所属的枚举类,以及`name()`和`ordinal()`方法获取常量的名称和在枚举中的位置。 总结来说,Java枚举类型提供了一种...

    java枚举ppt和详细代码

    枚举中的每个实例都是唯一的,且在程序启动时自动初始化,无需担心多线程环境下的安全问题。例如,下面的Singleton枚举类: ```java enum Singleton { INSTANCE; public void doSomething() { // ... } } ...

    简单总结java枚举类型

    枚举在Java中被引入为一个完整的类型,不同于C++中的枚举,这使得Java枚举更加强大且易于使用。以下是关于Java枚举类型的详细解释和相关知识点: 1. 定义枚举: 在Java中,枚举通过关键字`enum`来定义。例如,创建...

    java中enum枚举的详细用法

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

    java枚举类型说明

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

Global site tag (gtag.js) - Google Analytics