zoukankan      html  css  js  c++  java
  • 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());		// 输出:男
    	}
    
  • 相关阅读:
    0326系统按钮添加权限的工作(jsp权限写法)
    0321菜单数据
    ztree树的递归
    前端padding margin
    解决1像素边框问题
    水平垂直居中
    移动端css公共样式
    tap方法改良this指向
    移动端常见问题
    前端笔记(兼容)
  • 原文地址:https://www.cnblogs.com/xzxl/p/11186594.html
Copyright © 2011-2022 走看看