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
廣告