Tag: 枚举

Java enum反向查找最佳实践

我在博客上看到,在Java枚举中使用getCode(int)进行“反向查找”是一种合理的方法: public enum Status { WAITING(0), READY(1), SKIPPED(-1), COMPLETED(5); private static final Map<Integer,Status> lookup = new HashMap<Integer,Status>(); static { for(Status s : EnumSet.allOf(Status.class)) lookup.put(s.getCode(), s); } private int code; private Status(int code) { this.code = code; } public int getCode() { return code; } public static Status get(int code) { return lookup.get(code); } } 对我来说,静态映射和静态初始化器都看起来是一个坏主意,我首先想到的是将查找编码为: […]

在C#中枚举的方法

在Java中,有一个选项可以使用enum对象来写入enum和函数。 在C#中是否有这样的可能性,或者它只是一个string集合,就是这样? 我试图“覆盖” ToString()函数,它不编译。 有人有一个简单的代码示例?

超过2 ^ 32的枚举标志

我在我的应用程序中使用枚举标志。 Enum可以有大约50多个值,所以值可以达到2 ^ 50。 我只是想知道,我可以使用Math.Pow(2, variable)来计算这些? 当我尝试这样做时,我得到一个恒定的编译时错误。 有没有另外一种方法,除了手动计算这些2的权力,并把它? 这是我在做什么: [Flags] internal enum RiskStates : long { None = 0, AL = Convert.ToInt64(Math.Pow(2,0)), AK = 2, AZ = 4, AR = 8, CA = 16, CO = 32, CT = 64, DC = 128, DE = 256, FL = 512, GA = 1024, HI = 2048, […]

如何获得Java中的所有枚举值?

我遇到这个问题,我不知道实际的enumtypes,我需要迭代其可能的值。 if (value instanceof Enum){ Enum enumValue = (Enum)value; } 任何想法如何从enumValue中提取其可能的值?

testing一个对象是一个枚举

我想知道'theObject'是一个枚举(任何枚举types) foreach (var item in Enum.GetValues(theObject.GetType())) { //do something }

从C枚举中打印文本而不是值

int main() { enum Days{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}; Days TheDay; int j = 0; printf("Please enter the day of the week (0 to 6)\n"); scanf("%d",&j); TheDay = Days(j); //how to PRINT THE VALUES stored in TheDay printf("%s",TheDay); // isnt working return 0; }

Java中的“枚举”有什么用?

所以我看着这个“枚举”types,它看起来像一个荣耀arrays / ArrayList / List给我。 究竟是什么使用它?

C ++枚举使用比整数慢吗?

这真的是一个简单的问题: 我正在编程一个Go程序。 我应该用QVector<int>还是QVector<Player>代表董事会 enum Player { EMPTY = 0, BLACK = 1, WHITE = 2 }; 我想当然,使用Player而不是整数将会变慢。 但我不知道多less,因为我相信使用enum是更好的编码。 我已经做了一些关于分配和比较玩家的testing(而不是int ) QVector<int> vec; vec.resize(10000000); int size = vec.size(); for(int i =0; i<size; ++i) { vec[i] = 0; } for(int i =0; i<size; ++i) { bool b = (vec[i] == 1); } QVector<Player> vec2; vec2.resize(10000000); int size […]

lambdaexpression式中的枚举编译方式不同; 重载解决scheme改进的后果?

在尝试Visual Studio 2015 RC时,我收到了以前工作代码的运行时错误。 给定作为Expression<>传递给函数的lambda (x => x.CustomerStatusID == CustomerStatuses.Active) ,debugging器在expression式树中显示差异。 以前它编译为: .Lambda #Lambda1<System.Func`2[Services.DataClasses.CustomerDC,System.Boolean]>(Services.DataClasses.CustomerDC $x) { (System.Int32)$x.CustomerStatusID == 0 } 但在C#6.0中,现在编译为 .Lambda #Lambda1<System.Func`2[Services.DataClasses.CustomerDC,System.Boolean]>(Services.DataClasses.CustomerDC $x) { (System.Int32)$x.CustomerStatusID == (System.Int32).Constant<Services.DataClasses.CustomerStatuses>(Active) } 虽然我的树遍历代码的修复是直截了当的,额外的细节是赞赏,有没有人知道任何其他陷阱像这样漂浮? 或者,有没有人有链接的重载分辨率如何改善的具体细节的信息? 我找不到任何东西。

为什么在Java中的Enum final上是compareTo?

Java中的枚举实现了Comparable接口。 重写Comparable的compareTo方法会很好,但是在这里它被标记为final。 Enum的compareTo上的默认自然顺序是列出的顺序。 有谁知道为什么Java枚举有这个限制吗?