Tag: enums

使用@RequestBody将JSON转换为Enum类型

我有一个主枚举类,它本质上是一种对象的类定义。 例如,它看起来像下面的示例: public enum ColorDefinition { private String abbrev; private String color; private Class colorClass; RED(“RD”, “Red”, Red.class), GREEN(“GN”, “Green”, Green.class), BLUE(“BL”, “Blue”, Blue.class)…. } 我正在尝试从Javascript模型设置发布请求,该请求在正文中发送映射,例如 {红色:255,绿色:0,蓝色:0} 到使用的弹簧控制端点 @RequestMapping(value = “v1/color/EnableColors”, method = RequestMethod.POST) @ResponseBody public ResponseObject enableColors(@RequestBody Map colorMapping) 我收到以下错误消息: 无法从String“Red”构造ColorDefinition类型的Map键:不是有效的表示:无法从String“Red”构造ColorDefinition类型的Map键:不是Enum类的值之一 我在这做错了什么? 我是否需要在枚举类中使用其他方法来正确转换传入的枚举值? 它应该使用枚举中的另一个值(我已经尝试过它们没有成功)? 任何帮助是值得赞赏的,似乎这应该可以自动转换传入的值,我只是想不出来!

切换后的“缺少退货声明”(枚举) – 为什么?

编译器声称在MyClass.parse()末尾缺少return语句。 这是代码: package de.hs_rm.safelyovertaken.ble; import android.support.annotation.NonNull; import java.util.Arrays; class MyClass { @NonNull static MyClass parse(byte[] encoded) throws MyParseException { MyEnum myEnum = MyEnum.parse(Arrays.copyOfRange(encoded, 0, 2)); switch (myEnum) { case A: return new MyClassA(); case B: return new MyClassB(); case C: return new MyClassC(); } // compile error: “Missing return statement” // return null; // should […]

Hibernate – 如何映射EnumSet

我有一个Color Enum public enum color { GREEN, WHITE, RED } 我有包含它的MyEntity。 public class MyEntity { private Set colors; … 我已经有一个UserType来映射我的枚举。 你知道如何在Hibernate hbm.xml中映射一组枚举吗? 我需要UserType还是最简单的方法? 谢谢 编辑:只是为了评论,我正在寻找hbm.xml配置而不是@CollectionOfElements Annotation

在java中通过ref传递枚举

如何在java中通过引用传递enum参数? 有解决方案吗

Enum的枚举为NULL

我正在为Java 1.6上的大学课程开发一个LALG编译器。 所以我做了一个类类和语法类。 EnumTypes public enum EnumTypes { A(“OLA”), B(“MUNDO”), C(“HELLO”), D(“WORLD”), /** * The order below is reversed on purpose. * Revert it and will you get a NULL list of types furder. */ I(EnumGrammar.THREE), H(EnumGrammar.TWO), F(EnumGrammar.ONE), E(EnumGrammar.ZERO); private String strValue; private EnumGrammar enumGrammarValue; private EnumTypes(String strValue) { this.strValue = strValue; } private EnumTypes(EnumGrammar […]

如何使用PowerMock和Mockito模拟枚举类的实例?

我试着按照这个非常相似的问题的答案提供的例子,但它对我不起作用。 我收到以下错误消息: java.lang.IllegalArgumentException: Cannot subclass final class class com.myproject.test.support.ExampleEnumerable at org.mockito.cglib.proxy.Enhancer.generateClass(Enhancer.java:447) at org.mockito.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25) at org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:217) at org.mockito.cglib.proxy.Enhancer.createHelper(Enhancer.java:378) at org.mockito.cglib.proxy.Enhancer.createClass(Enhancer.java:318) at org.powermock.api.mockito.repackaged.ClassImposterizer.createProxyClass(ClassImposterizer.java:123) at org.powermock.api.mockito.repackaged.ClassImposterizer.imposterise(ClassImposterizer.java:57) at org.powermock.api.mockito.internal.mockcreation.MockCreator.createMethodInvocationControl(MockCreator.java:110) at org.powermock.api.mockito.internal.mockcreation.MockCreator.mock(MockCreator.java:58) at org.powermock.api.mockito.PowerMockito.mock(PowerMockito.java:143) 我需要一个enum class的简单模拟实例。 我不需要模拟它的任何方法。 这是我想要模拟的类: public enum ExampleEnumerable implements IEnumerable { EXAMPLE_ENUM_1(“Test Enum 1”), EXAMPLE_ENUM_2(“Test Enum 2”); final String alias; ExampleEnumerable(final String alias) { this.alias = alias; […]

订购枚举值

我想知道是否有任何方式为不同的类订购枚举。 例如,如果我有一组固定的化学物质,它们以不同的方式与其他化学物质发生反应,有些是强烈的,有些是微弱的。 我基本上希望能够根据组应该对之反应的化学物质(即取决于类别)来切换它们的排列顺序。 我知道我应该使用Comparable,但我不知道该怎么做。 如果我不够清楚,请发表评论,我会进一步解释。 谢谢。 public static enum Chem { H2SO4, 2KNO3, H20, NaCl, NO2 }; 所以我有一些看起来像这样的东西,我已经知道每种化学物质会如何与其他化学物质发生反应。 我只是想根据它会与之反应的化学物质来安排Chems。 这就是我所拥有的一切。

为什么EnumSet或EnumMap可能比它们的哈希值更高效?

以下内容来自EnumMap的Java doc的Implementation Note部分: 实施说明:所有基本操作都在恒定时间内执行。 它们很可能(虽然不能保证)比它们的HashMap对应物更快。 我在EnumSet的java doc中也看到过类似的行。 我想知道为什么EnumSets和EnumMaps更有可能比他们的哈希同行更快?

如何检测新值已添加到枚举中,并且不在交换机中处理

我不时要在项目的枚举类型中添加一个新值。 public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, FILENOTFOUND //this one is new one } 我想要的是每个我没有处理新值的开关都有编译时错误 ,如下所示: switch (color) { case MONDAY: case TUESDAY: case WEDNESDAY: case THURSDAY: System.out.println(“Mondays are bad.”); break; case FRIDAY: System.out.println(“Fridays are better.”); break; case SATURDAY: case SUNDAY: System.out.println(“Weekends are best.”); break; } 有一个默认:抛出一些exception是不够好的,我希望它是编译时间。 我不认为这是可能的,但也许有人有一个巧妙的把戏…… 我认为Findbugs有一个规则可以找到那些,但我只看到了这个: Eq:为枚举定义的协变equals()方法(EQ_DONT_DEFINE_EQUALS_FOR_ENUM) […]

说int枚举模式是编译时常量是什么意思?

这来自Effective Java 使用int枚举模式的程序很脆弱。 因为int枚举是编译时常量,所以它们被编译到使用它们的客户端中。 有人可以解释为什么int枚举模式被称为编译类型常量以及编译到客户端的含义是什么? 这是一个这样一个常数的例子: public static final int APPLE_FUJI = 0;