15. 枚举类

一、枚举类概述

1. 枚举类是一种特殊的类,它的对象是有限而且固定的

2. 枚举类使用enum关键字来定义,并且默认使用final修饰

3. 枚举类的所有实例必须在枚举类的第一行显式列出,系统会自动添加public static final修饰

public enum Season
{
	// 在第一行列出4个枚举实例
	SPRING, SUMMER, FALL, WINTER;
}
  • 上面代码块中列出了4个枚举值,这些枚举值代表了Season枚举类的所有可能的实例
  • 如果需要使用枚举类的某个实例,可使用EnumClass.variable的形式,如Season.SPRING

4. 枚举类继承了java.lang.Enum类,故可直接使用该类中所包含的方法

  • int compareTo(E o):与指定枚举实例比较顺序
  • String name():返回枚举实例的名称
  • int ordinal():返回枚举值在枚举类中的索引值(即枚举值在枚举声明中的位置)
  • String toString():返回枚举实例的名称,与name()相似,但此方法更常用
  • public static <T extends Enum<T>> T valueOf(Class<T> enumType, String name):返回指定枚举类中指定名称的枚举值

二、枚举类的成员

1. 构造器

  • 枚举类的构造器只能使用private访问控制符来修饰,可以省略不写(系统自动添加private修饰符)
  • 如果定义了final成员变量,则应显式定义带参数的构造器,此时列出枚举值时就必须对应地传入参数

2. 成员变量

  • 枚举类通常应该设计成不可变类,故建议将枚举类的成员变量都使用private final修饰
  • 对于final成员变量,有三种方法指定初始值,但通常选择在构造器里为这些成员变量指定初始值,因此应该为枚举类显式定义带参数的构造器,此时列出枚举值时就必须对应地传入参数

3. 代码示例

public enum Gender
{
	// 此处的枚举值必须调用对应的构造器来创建
	MALE("男"), FEMALE("女");

	// 成员1:成员变量
	private final String name;
	// 成员2:构造器
	[private] Gender(String name)
	{
		this.name = name;
	}
	// 成员3:方法
	public String getName()
	{
		return this.name;
	}
}

补:当为Gender枚举类创建了Gender(String name)构造器后,枚举值就必须通过调用它来创建。也就是说,在枚举类中列出枚举值时,实际上就是调用构造器创建枚举类对象,只是这里无须使用new关键字,也无须显式调用构造器。之所以前面列出枚举值无须传入参数,甚至无须使用括号,是因为前面的枚举类包含无参数的构造器。

	public static void main(String[] args)
	{
		Gender g1 = Gender.MALE;
		System.out.println(g1.getName());		// 输出:男
	}

原文地址:https://www.cnblogs.com/xzxl/p/11186594.html

时间: 2024-08-29 22:44:46

15. 枚举类的相关文章

Java基础15:深入剖析Java枚举类

Java基础15:深入剖析Java枚举类 枚举(enum)类型是Java 5新增的特性,它是一种新的类型,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示. 初探枚举类 在程序设计中,有时会用到由若干个有限数据元素组成的集合,如一周内的星期一到星期日七个数据元素组成的集合,由三种颜色红.黄.绿组成的集合,一个工作班组内十个职工组成的集合等等,程序中某个变量取值仅限于集合中的元素.此时,可将这些数据集合定义为枚举类型. 因此,枚举类型是某类数据可能取值的集合,如一周内星期可能取值的

java 枚举类 enum 总结

枚举定义: enum是计算机编程语言中的一种数据类型.枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等.如果把这些量说明为整型, 字符型或其它类型显然是不妥当的.为此,C语言提供了一种称为“枚举”的类型.在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变 量取值不能超过定义的范围.应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型. java中枚举类总

枚举类专题(有源代码)

简介:JDK1.5之前需要自定义枚举类,JDK1.5新增的enum关键字用于定义枚举类,若枚举只有一个成员,则可以作为一种单例模式的实现方式 枚举类的属性:枚举类对象的属性不应允许被改动,所以应该使用private final修饰 ·枚举类的使用private final修饰的属性应该在构造器中为其赋值 ·若枚举类显式的定义了带参数的构造器,则在列出枚举值时也必须对应的传入参数 Enum枚举类: ·必须在枚举类的第一行声明枚举类对象. ·枚举类和普通类的区别: 1.使用enum定义的枚举类默认继

JAVA学习--枚举类的使用

* 一.枚举类  * 1.如何自定义枚举类  * 2.如何使用enum关键字定义枚举类  *     >常用的方法:values() valueOf(String name)  *     >如何让枚举类实现接口:可以让不同的枚举类的对象调用被重写的抽象方法,执行的效果不同.(相当于让每个对象重写抽象方法) 1 //普通枚举类 2 class Season{ 3 //1.提供类的属性,声明为private final 4 private final String seasonName; 5 p

FastJson转换自定义枚举类

在项目中有些状态需要采用枚举类型,在数据库中保存的是name(英文),而前台需要显示的是text(中文). 所以这就需要自己去实现序列. 例如对象: import java.util.Date; import java.util.List; import com.alibaba.fastjson.annotation.JSONField; public class Project { /** * * 审核状态 */ @JSONField(name = "auditStatus") pr

java 枚举类小结 Enum

好久没有接触枚举类了,差不多都忘了,今天抽出个时间总结一下吧.说实话,枚举类确实能够给我们带来很大的方便. 说明:枚举类它约定了一个范围,可以理解成只可以生成固定的几个对象让外界去调用,故枚举类中的构造方法都是private类型的.进而求其次,究竟枚举类到底有何特殊之处呢? 呈上代码一览(本人也是java Android 领域的菜鸟,如有错误之处,希望大家能够给以指点) 1 /** 2 * 测试枚举类 3 * @author Administrator 4 * @Date 2015-8-3 5

疯狂java笔记-枚举类

1 //手动实现枚举类 2 //步骤 3 1.通过private将构造器隐藏起来 4 2.把这个类的所有可能的实例都使用public static final修饰的类变量来保存 5 3.如果有必要,可以提供一些静态方法,允许其他程序根据特定的参数来获取与之匹配的实例 6 public class Season{ 7 //把Season类定义成不可变的,将其Field也定义成final 8 private final String name; 9 private final String desc

java 28 - 4 JDK5的新特性 之 枚举的概述和自定义枚举类

枚举 枚举概述 是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内.举例:一周只有7天,一年只有12个月等. 回想单例设计模式:单例类是一个类只有一个实例 那么多例类就是一个类有多个实例,但不是无限个数的实例,而是有限个数的实例.这才能是枚举类. 自定义枚举类. 第一版:无参构造 1 public class Direction { 2 // 创建几个实例 3 public static final Direction FRONT = new Direction(); 4 public

Effective Item 15 - 枚举

于Java 1.5增加的enum type. enum type是由一组固定的常量组成的类型,比如四个季节.扑克花色. 在出现enum type之前,通常用一组int常量表示枚举类型. 比如这样: public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int APPLE_GRANNY_SMITH = 2; public static final i