Java 是否允许像好的 C 甚至 C# 这样的东西,你可以定义一个枚举,其中的字段值自动增长,并从一个可选的给定值开始?
例如
在 C 或 C# 中:
enum Foo { A = 10, B, C, D = 5000, E, Fish };
产量 A = 10,B = 11,C = 12,D = 5000,E = 5001,鱼 = 5002。
最佳答案
在 Java 中,您根本无法显式指定序数值。它们总是从 0 开始自动递增,无法控制。
如果你想要其他自定义值,你需要将它们放在构造函数调用中并自己存储。您可以获得自动增量,但它实在是太恶心了:
import java.util.EnumSet;
// Please don't ever use this code. It's here so you can point and laugh.
enum Foo
{
A(10), B, C, D(5000), E, Fish;
private static int nextValue;
private int value;
private Foo()
{
this(Counter.nextValue);
}
private Foo(int value)
{
this.value = value;
Counter.nextValue = value + 1;
}
public int getValue()
{
return value;
}
private static class Counter
{
private static int nextValue = 0;
}
}
public class Test
{
public static void main(String[] args)
{
for (Foo foo : EnumSet.allOf(Foo.class))
{
System.out.println(foo.name() + " " +
foo.ordinal() + " " +
foo.getValue());
}
}
}
请注意嵌套类的必要性,因为您无法访问枚举构造函数中的静态字段。恶心,恶心,恶心。请不要这样做。
关于Java枚举自动递增条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2055415/