反正有没有通过比较给定的string来检查一个枚举是否存在? 我似乎无法find任何这样的function。 我可以尝试使用valueOf方法并捕获一个exception,但我被告知捕获运行时exception并不是好的做法。 任何人有任何想法?
有没有可能在JSF中testing枚举的平等? 例如, stuff是一个enum Stuff : <h:outputText value="text" rendered="#{mrBean.stuff == mrsBean.stuff}"/>
我如何序列化和反序列化这样一个简单的枚举与gson 2.2.4? public enum Color { RED, BLUE, YELLOW; }
我正在开发一个Java企业应用程序,目前正在执行Java EE安全性的东西来限制特定function对特定用户的访问。 我configuration了应用程序服务器和所有东西,现在我使用RolesAllowed注释来保护这些方法: @Documented @Retention (RUNTIME) @Target({TYPE, METHOD}) public @interface RolesAllowed { String[] value(); } 当我使用这样的注释时,它工作正常: @RolesAllowed("STUDENT") public void update(User p) { … } 但这不是我想要的,因为我必须在这里使用一个string,重构变得困难,错字可能发生。 所以,而不是使用一个string,我想使用一个枚举值作为这个注释的参数。 Enum看起来像这样: public enum RoleType { STUDENT("STUDENT"), TEACHER("TEACHER"), DEANERY("DEANERY"); private final String label; private RoleType(String label) { this.label = label; } public String toString() { return this.label; } } 所以我试图使用Enum作为这样的参数: […]
Enum类中的hashCode()方法是final的,定义为super.hashCode(),这意味着它返回一个基于实例地址的数字,这个数字是程序员POV的一个随机数。 将其定义为例如ordinal() ^ getClass().getName().hashCode()在不同的JVM中是确定性的。 它甚至会更好一些,因为最不重要的位将“尽可能地变化”,例如,对于包含多达16个元素的枚举和16的HashMap,肯定没有冲突(当然,使用EnumMap更好,但有时不可能,例如没有ConcurrentEnumMap)。 目前的定义你没有这样的保证,是吗? 答案摘要 使用Object.hashCode()比较像上面那样的更好的hashCode,如下所示: PROS 简单 CONTRAS 速度 更多的碰撞(对于任何大小的HashMap) 非决定论,传播到其他对象使他们无法使用 确定性模拟 ETag计算 根据例如HashSet迭代顺序search错误 我个人更喜欢更好的hashCode,但恕我直言,没有理由重量多less,除了速度。 UPDATE 我对速度感到好奇,写了一个令人惊讶的结果 。 对于每个类的单个字段的价格,您可以确定性的哈希码快四倍 。 在每个字段中存储哈希码将更快,尽pipe可以忽略不计。 标准哈希代码速度不是很快的解释是,当对象被GC移动时,它不能是对象的地址。 更新2 一般来说, hashCode性能有一些奇怪的事情发生 。 当我理解他们时,仍然有一个悬而未决的问题,为什么System.identityHashCode (从对象头中读取)比访问一个普通的对象字段慢。
使用嵌套的公共C ++类和枚举的优点和缺点是什么? 例如,假设您有一个名为printer的类,并且此类还存储输出托盘上的信息,则可以有: class printer { public: std::string name_; enum TYPE { TYPE_LOCAL, TYPE_NETWORK, }; class output_tray { … }; … }; printer prn; printer::TYPE type; printer::output_tray tray; 或者: class printer { public: std::string name_; … }; enum PRINTER_TYPE { PRINTER_TYPE_LOCAL, PRINTER_TYPE_NETWORK, }; class output_tray { … }; printer prn; PRINTER_TYPE type; output_tray tray; 我可以看到嵌套私有枚举/类的好处,但是当涉及到公共的时候,办公室是分裂的 […]
Python 3.4引入了一个新的模块enum ,它将枚举types添加到语言中。 enum.Enum的文档提供了一个示例来演示如何扩展它: >>> class Planet(Enum): … MERCURY = (3.303e+23, 2.4397e6) … VENUS = (4.869e+24, 6.0518e6) … EARTH = (5.976e+24, 6.37814e6) … MARS = (6.421e+23, 3.3972e6) … JUPITER = (1.9e+27, 7.1492e7) … SATURN = (5.688e+26, 6.0268e7) … URANUS = (8.686e+25, 2.5559e7) … NEPTUNE = (1.024e+26, 2.4746e7) … def __init__(self, mass, radius): … self.mass = […]
可能重复: 有一个简单的脚本来将C ++枚举转换为string吗? 我通常发现我需要将枚举转换为c + +中的string 我总是这样做: enum Enum{ Banana, Orange, Apple } ; char * getTextForEnum( int enumVal ) { switch( enumVal ) { case Enum::Banana: return "bananas & monkeys"; case Enum::Orange: return "Round and orange"; case Enum::Apple: return "APPLE" ; default: return "Not recognized.."; } } 有这样一个更好的或公认的成语吗?
我有一些常量代表我的模型的字段中的有效选项。 在Ruby中处理这些常量的最好方法是什么?
我想知道当我将生成器函数的结果传递给python的枚举()时会发生什么。 例: def veryBigHello(): i = 0 while i < 10000000: i += 1 yield "hello" numbered = enumerate(veryBigHello()) for i, word in numbered: print i, word 枚举是懒惰迭代的,还是它把所有东西都塞进了第一个呢? 我99.999%肯定它是懒惰的,所以我可以把它和发电机function完全一样,还是需要注意什么?