与.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中,枚举是类型安全的,你根本无法表达这个概念。 –