與.NET相比,我沒有太多的Java經驗。在.NET中,枚舉被視爲整數的精簡包裝,因此您可以輕鬆創建未命名的枚舉值。例如:你能像Java中一樣在Java中創建一個未定義的枚舉值嗎?
// C# code
public enum Colors { Red, Green, Blue }
Console.Writeline(Colors.Red + " " + Colors.Green + " " + Colors.Blue); // Red Green Blue
var unknown = (Colors)(-1);
Console.WriteLine(unknown); // -1
是否有可能在Java中做同樣的事情?
編輯:這似乎是從事實的情況下,該代碼將無法編譯:
// Java code
enum Colors { R, G, B }
static int f(Colors c) {
switch (c) {
case R: return 1;
case G: return 2;
case B: return 3;
} // Compiler complains about a missing return statement
}
我當然希望不要!這聽起來像一個可怕的主意! –
@JoeC我也同意。我有點迂腐,所以在我的.NET代碼中,我總是有一個'default:'情況,即每次開啓枚舉時我都會拋出異常,即使我已經處理了所有定義的值。我想知道我是否必須爲Java做同樣的事情。 –
絕對不是。在Java中,枚舉是類型安全的,你根本無法表達這個概念。 –