`
chaoyi
  • 浏览: 309677 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Enum

 
阅读更多

本章目标
掌握enum关键字与Enum类的关系
了解Enum类中提供的常用方法

 

Enum
从前面已经清楚的知道,使用enum关键字可以定义一个枚举,实际上此关键字表示的是java.lang.Enum类型,即:使用enum声明的枚举类型,就相当于定义一个类,而此类则默认继承java.lang.Enum类。java.lang.Enum类的定义如下:
public abstract class Enum<E extends Enum<E>>
extends Object
implements Comparable<E>, java.io.Serializable

 

枚举类的主要操作方法

 
 有如下的枚举类

public enum Color {//定义枚举类型
	RED,GREEN,BLUE;//定义枚举的 3 个类型
}

 

取得枚举的信息
在枚举类建立完成之后,实际上都会为其调用枚举类中的构造方法,为其赋值,在Enum类的构造方法中的第一个参数name就是定义的枚举的名称,第二个参数ordinal则会从0开始依次进行编号。之后可以使用Enum类中提供的name()和ordinal()方法取得名字和编号。

 

验证name()和ordinal()方法

public class GetEnumInfo {
	public static void main(String[] args) {
		for(Color c : Color.values()){//枚举.values() 表示得到全部枚举的内容
			System.out.println(c.ordinal() +" --> "+c.name());
		}
	}
/* 结果:
 * 0 --> RED
 * 1 --> GREEN
 * 2 --> BLUE
 * */
}

 

为枚举类的每一个对象赋值
可以通过构造方法和setter方法两种方式为枚举中的每个属性赋值:
——每个枚举类中都有其指定好的若干对象,当然,每一个枚举对象中也可以包含多个属性。而这些属性也可以通过构造方法为其赋值。
——以上是通过构造方法的方式为属性赋值的,当然也可以通过调用setter()的方式为指定的属性赋值,但是这样一来就必须明确好每一个枚举类的对象,如果操作的对象是RED,则名字应该为“红色”,如果操作的对象是GREEN,则名字应该为“绿色”等。

 

通过构造方法为属性赋值

enum Color{
	RED("红色"),GREEN("绿色"),BLUE("蓝色");//定义枚举的 3 个类型
	private String name;//定义 name 属性
	private Color(String name) {//定义构造方法
		this.name = name;//设置名字
	}
	public String getName() {//取得 name 属性
		return name;
	}
	public void setName(String name) {//设置 name 属性
		this.name = name;
	}
}
public class ConstrutorEnum {
	public static void main(String[] args) {
		for(Color c : Color.values()){//枚举.values() 表示得到全部枚举的内容
			System.out.println(c.ordinal() +" --> "+c.name()+"("+c.getName()+")");//输出
		}
	}
/* 结果:
 * 0 --> RED(红色)
 * 1 --> GREEN(绿色)
 * 2 --> BLUE(蓝色)
 * */
}

 

通过setter方法为属性赋值

enum Color{
	RED,GREEN,BLUE;//定义枚举的 3 个类型
	private String name;//定义 name 属性
	public String getName() {
		return name;
	}
	public void setName(String name) {
		switch(this){
			case RED:{//判断是否是红色
				if("红色".equals(name)){
					this.name = name;//设置名称
				}else{
					System.out.println("设置内容错误。");
				}
				break;
			}
			case GREEN:{//判断是否是绿色
				if("绿色".equals(name)){
					this.name = name;//设置名称
				}else{
					System.out.println("设置内容错误。");
				}
				break;
			}
			case BLUE:{//判断是否是蓝色
				if("蓝色".equals(name)){
					this.name = name;//设置名称
				}else{
					System.out.println("设置内容错误。");
				}
				break;
			}
		}
	}
}
public class SetEnum {
	public static void main(String[] args) {
		Color c = Color.BLUE;
		c.setName("兰色");//设置一个错误的名字
		c.setName("蓝色");//设置一个正确的名字
		System.out.println(c.getName());
	}
/* 结果:
 * 设置内容错误。
 * 蓝色
 * */
}

 

valueof()
如果不想通过“枚举类.对象”的形式取得每一个枚举类的对象,也可以使用Enum类定义的“枚举类.valueof()”方法的形式进行调用。

 

使用vlaueof()方法找到一个枚举对象

public class ValueOfDemo {
	public static void main(String[] args) {
		Color c = Enum.valueOf(Color.class, "BLUE");
		c.setName("兰色");//设置一个错误的名字
		c.setName("蓝色");//设置一个正确的名字
		System.out.println(c.getName());
	}
/* 结果:
 * 0 --> RED
 * 1 --> GREEN
 * 2 --> BLUE
 * */
}

 

使用比较器
在Enum类的定义中已经实现好了Comparable接口,所以枚举类的内容本身是可以进行排序的,下面通过TreeSet演示枚举的排序操作。
在类集部分曾经介绍过TreeSet可以直接进行排序,排序的规则是通过Comparable接口完成的。

 

验证枚举比较器

import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
enum Color{
	RED,GREEN,BLUE;//定义枚举的 3 个类型
}
public class ComparableEnum {
	public static void main(String[] args) {
		Set<Color> t = new TreeSet<Color>();//只能加入 Color 类型
		t.add(Color.GREEN);//增加绿色的枚举对象
		t.add(Color.BLUE);//增加蓝色的枚举对象
		t.add(Color.RED);//增加红色的枚举对象
		Iterator<Color> iter = t.iterator();//使用迭代输出
		while(iter.hasNext()){
			System.out.print(iter.next()+"、");
		}
	}
/* 结果:
 * RED、GREEN、BLUE、
 * */
}

 

 

 

  • 大小: 59.2 KB
分享到:
评论

相关推荐

    enum类型重定义解决方法

    在编程中,`enum`(枚举)类型是用来定义一组命名的整数常量,它在C++中被广泛使用。然而,在某些情况下,我们可能会遇到`enum`类型的重定义问题,这通常发生在包含不同库或者头文件时,因为这些库可能已经定义了...

    C++中枚举类型(enum)

    ### C++中的枚举类型(Enum) 在C++编程语言中,枚举(`enum`)是一种用户定义的类型,它由一组具有整数值的命名常量组成。这些值可以被程序用来代替数字,使代码更具可读性,并且能够表示特定范围内的固定集合。 ...

    Java枚举类型Enum的用法

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

    opc enum 32-64安装包

    OPC Enum 32-64 安装包是一款专为处理32位和64位操作系统设计的OPC组件,确保在不同系统环境下能稳定、高效地工作。 OPC Core Component是OPC技术的核心组成部分,它提供了基本的OPC服务,如数据访问(OPC DA,OPC ...

    WPF 中一组 RadioButton 向 Enum 的绑定

    其中一个常见的需求是将RadioButton组与枚举类型(Enum)进行绑定,以便用户通过选择不同的RadioButton来设置某个属性的值。枚举是一种强大的数据类型,它允许我们定义一组具有特定名称的常量,这些常量通常代表某种...

    enum 结构分析源码

    枚举(enum)在编程语言中是一种非常基础且重要的数据类型,它允许程序员定义一组预定义的常量,这些常量通常表示特定的值或状态。在这个“enum 结构分析源码”资源中,我们主要关注的是C语言中的枚举使用和实现。...

    enum类型被intent所携带时各种情况的示例代码

    然而,对于enum(枚举)类型,由于它不是Android系统默认支持的数据传递类型,所以在使用Intent传递enum时需要特别处理。本教程将详细讲解enum类型如何与Intent结合,以及在不同情况下如何实现数据传输。 首先,让...

    java enum 枚举 学习资料

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

    Options:有时在某些情况下,您想在OptionSet中使用Enum或希望Enum由Raw的Int类型支持,但同时也具有String标签

    选项Swift软件包,用于更强大的Enum类型。 目录介绍特征安装用法设置一个MappedValueRepresentable枚举使用MappedValueCollectionRepresented 使用MappedEnum类型的可编码枚举在ESet中使用OptionSet中的EnumSet 将...

    Java enum的用法详解

    Java enum 的用法详解 Java enum(枚举)是一种特殊的数据类型,用于定义一组固定的常量。从 JDK 1.5 开始,Java 引入了 enum 机制,解决了传统的常量定义方式的不足。 用法一:常量 在 JDK 1.5 之前,我们定义...

    枚举语句enum用法详解

    枚举(enum)在编程语言中是一种非常有用的类型,它允许我们定义一组命名常量,这些常量通常代表一组相关的值。在C#中,枚举(enum)被广泛用于增强代码的可读性和可维护性。下面我们将深入探讨C#中的枚举用法。 一...

    Laravel开发-enum

    在Laravel框架中,"enum"(枚举)是一种实用的工具,用于限制特定属性或方法的值只能是预定义的一组。PHP在版本8.0中引入了对枚举的支持,这使得在 Laravel 开发中更加方便地处理固定选项的数据类型。本教程将深入...

    Enum汇总大全详细讲解

    枚举(Enum)在Java中是一种特殊的类,用于定义固定的常量集合,它提供了一种安全、类型化的常量表示方式。以下是对Enum的详细讲解: 1. **基本枚举定义**: ```java enum Color {BLUE, RED, GREEN;} ``` 这是...

    Laravel开发-laravel-enum

    在Laravel框架中,枚举(Enum)是一种实用的工具,可以帮助我们更好地组织代码,提高可读性和可维护性。Laravel Enum库是为Laravel应用程序设计的一个扩展,它允许开发者使用枚举类型来替代传统的常量或字符串,从而...

    Python库 | enum-0.4.7.tar.gz

    在这个场景中,我们关注的是一个名为"enum"的Python库,其版本为0.4.7,封装在"enum-0.4.7.tar.gz"的压缩包文件中。这个压缩包通常包含了库的所有源代码、文档和其他相关资源。 `enum`是Python中的一个内置库,自...

    Java Enum使用Demo源码

    在Java编程语言中,枚举(Enum)是一种特殊的类,用于定义固定的常量集合。它在许多场景下比常量接口或静态final变量更安全、更方便。本篇将通过"Java Enum使用Demo源码"深入探讨Java枚举的用法。 首先,枚举在Java...

    java enum 枚举的spring boot2.x完美实现demo源码

    在Java编程语言中,枚举(`enum`)是一种强大的工具,它允许我们定义一组预定义的常量。在Spring Boot 2.x框架中,枚举的使用可以帮助我们更好地管理和组织代码,提供类型安全和可读性。本篇将深入探讨如何在Spring ...

    PyPI 官网下载 | aenum-1.2.1.tar.gz

    **PyPI 官网下载 | aenum-1.2.1.tar.gz** 在Python编程语言中,`PyPI`(Python Package Index)是官方的软件仓库,它为开发者提供了存储和分享他们创建的Python模块、库和其他软件工具的平台。用户可以方便地通过`...

    DNS,ENUM原理介绍

    简单介绍了DNS和ENUM的原理及在IMS网络中的使用

Global site tag (gtag.js) - Google Analytics