Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误和异常

Java 多线程

Java 同步

Java 网络

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级 Java

Java 杂项

Java API 和框架

Java 类参考

Java 有用资源

Java - 枚举构造函数



Java 枚举 是一种特殊的 ,它表示一组预定义的常量值,并且可以在 switch 表达式 中用于比较,用作应用程序代码中的常量。

默认情况下,枚举不需要任何构造函数,其默认值为与其声明相同的字符串。请考虑以下示例

enum WEEKDAY { MONDAY, TUESDAY, WEDNESDAY, THRUSDAY, FRIDAY, SATURDAY, SUNDAY }

如果我们打印上述枚举的任何值,它将打印与声明相同的字符串。

System.out.println(WEEKDAY.MONDAY);

它将打印如下所示的结果

MONDAY

枚举构造函数的用法

现在,如果我们想为枚举分配默认值,我们可以创建如下所示的枚举构造函数

enum WEEKDAY {
	MONDAY("Day 1");
	private final String description;
	
	WEEKDAY(String description) {
		this.description = description;
	}
}

在这种情况下,我们使用构造函数为枚举分配默认描述。

枚举构造函数的作用域

由于枚举是一种特殊的类,因此枚举构造函数只能具有私有或包私有修饰符。为枚举构造函数设置公共标识符将导致编译时错误。

enum WEEKDAY {
	MONDAY("Day 1");
	private final String description;
	
	// compiler error: illegal modifier, only private is permitted. 
	public WEEKDAY(String description) {
		this.description = description;
	}
}

以下是枚举构造函数的有效声明

带有私有构造函数的枚举

我们可以为枚举创建私有构造函数,如下所示。

enum WEEKDAY {
	MONDAY("Day 1");
	private final String description;
	
	// valid declaration
	private WEEKDAY(String description) {
		this.description = description;
	}
}

示例

在此示例中,我们创建了一个带有私有构造函数的枚举 WEEKDAY。使用私有构造函数,我们使用其构造函数设置枚举描述的值。

package com.tutorialspoint;

// create the enum
enum WEEKDAY {
	
	// create values of enum
	MONDAY("Day 1"),
	TUESDAY("Day 2"),
	WEDNESDAY("Day 3"),
	THRUSDAY("Day 4"),
	FRIDAY("Day 5"),
	SATURDAY("Day 6"),
	SUNDAY("Day 7");
	
	private final String description;
	// private construtor to set default value
	private WEEKDAY(String description) {
		this.description = description;
	}
	// getter method to get the description
	public String getDescription () {
		return this.description;
	}
}
public class Tester {
   public static void main(String[] args) { 
	   System.out.println(WEEKDAY.MONDAY.getDescription());
	   System.out.println(WEEKDAY.MONDAY);
   }
}

让我们编译并运行上述程序,这将产生以下结果 -

Day 1
MONDAY

带有包私有构造函数的枚举

我们可以为枚举创建包私有构造函数,如下所示。

enum WEEKDAY {
	MONDAY("Day 1");
	private final String description;
	
	// valid declaration
    WEEKDAY(String description) {
		this.description = description;
	}
}

示例

在此示例中,我们创建了一个带有包私有构造函数的枚举 WEEKDAY,因为没有传递修饰符。使用此构造函数,我们使用其构造函数设置枚举描述的值。

package com.tutorialspoint;

// create the enum
enum WEEKDAY {
	
	// create values of enum
	MONDAY("Day 1"),
	TUESDAY("Day 2"),
	WEDNESDAY("Day 3"),
	THRUSDAY("Day 4"),
	FRIDAY("Day 5"),
	SATURDAY("Day 6"),
	SUNDAY("Day 7");
	
	private final String description;
	// private construtor to set default value
	WEEKDAY(String description) {
		this.description = description;
	}
	// getter method to get the description
	public String getDescription () {
		return this.description;
	}
}
public class Tester {
   public static void main(String[] args) { 
	   System.out.println(WEEKDAY.MONDAY.getDescription());
	   System.out.println(WEEKDAY.MONDAY);
   }
}

让我们编译并运行上述程序,这将产生以下结果 -

Day 1
MONDAY
广告