草庐IT

java - 我应该如何在 JavaDB 中存储 Java 枚举?

我应该如何在JavaDB中存储Java枚举?我是否应该尝试将枚举映射到SMALLINT并仅将值保留在源代码中?嵌入式数据库仅供单个应用程序使用。或者我应该将值存储为DECIMAL?这些解决方案都不适合我。有没有更好的选择?这是我的枚举:importjava.math.BigDecimal;publicenumVat{NORMAL(newBigDecimal("0.25")),FOOD(newBigDecimal("0.12")),BOOKS(newBigDecimal("0.06")),NONE(newBigDecimal("0.00"));privatefinalBigDecimal

java - 枚举之间的共享方法

我想在两个新枚举中重构一个emun,但我不喜欢在所有新枚举中复制/粘贴枚举方法。enumEmailType{REMINDER_ADMIN('reminderForAdmin')REMINDER_PRODUCTION('reminderForProduction')REMINDER_MANAGEMENT('reminderForManagement')REMINDER_CUSTOMER('reminderForCustomer')privatefinalpropertiesIdentifierStringgetTemplate(type){...}StringgetFrom(type){

java - 在 Java 中实现通用接口(interface)的枚举常量

假设您有一个通用接口(interface):publicinterfaceMyInterface{TdoSomething();}是否可以声明一个实现MyInterface的枚举?,但每个枚举常量都为不同的值T实现它?也就是说,给定这个枚举:publicenumMyEnum{FOO,BAR,BAZ;}我们可以改变它吗FOO工具MyInterface,BAR工具MyInterface,和BAZ工具MyInterface>,并使MyEnum整体工具MyInterface?这样做似乎是完全可行的,所以它可能以类型安全的方式完成。 最佳答案

java - 为什么,当我在 switch 语句中为每个枚举常量设置 case 时,我仍必须提供默认值?

这个问题在这里已经有了答案:Whyisdefaultrequiredforaswitchonanenum?(8个答案)关闭3年前。我试图在Java中声明一个枚举并在switch语句中使用该类型的变量,其中涵盖了该类型枚举常量的所有可能情况。enumMyEnum{FOO,BAR}privatestaticvoidtest(MyEnume){Stringmsg;switch(e){caseFOO:msg="foo";break;caseBAR:msg="bar";break;}System.out.println("Enumis:"+e+"msgis:"+msg);//compilerer

Java 常量数组

如何在不使用enums的情况下在Java中声明和初始化常量数组?staticfinalType[]arrayOfConstants=newType[10];//notanarrayofconstants 最佳答案 如果你想创建一个不可变数组,不,你不能。Java中的所有数组都是可变的。如果你只想在你的类中预定义数组,你可以这样做:privatestaticfinalint[]MY_ARRAY={10,20,30,40,50};这里我们创建了一个长度为5的预定义数组MY_ARRAY,所以MY_ARRAY[0]是10等等。请注意,尽管M

java - Enum.values() 在哪里定义?

每个Java枚举都有一个静态的values()方法,可以这样使用for(MyEnumenum:MyEnum.values()){//Dosomethingwithenum}但是,我不知道这个方法是在哪里定义的。Javadoc中没有提到它并且它没有出现在源文件中的任何地方。 最佳答案 这是JavaLanguageSpecification所要求的:values和valueOf将为所有枚举隐式声明:/***Returnsanarraycontainingtheconstantsofthisenum*type,intheorderthey

java - 覆盖 java.lang.Enum.values() 上的 Javadoc 注释

关于方法java.lang.Enum我有一个非常具体的问题.values().我想覆盖它的javadoc。非常准确地说,当前的javadoc是在我创建自己的枚举之后:publicstaticMyClass.MyEnum[]values()...Thismethodmaybeusedtoiterateovertheconstantsasfollows:for(MyClass.MyEnumc:MyClass.MyEnum.values())System.out.println(c);Returns:...但在我的公司System.out调用被认为是不好的做法,所以我不希望它被显示出来。我的

java - 如何使用 Java 8 流 API 将枚举存储到 map

我有一个enum和另一个enum作为参数publicenumMyEntity{Entity1(EntityType.type1,....MyEntity(EntityTypetype){this.entityType=entityType;}}我想创建一个按类型返回enum的方法publicMyEntitygetEntityTypeInfo(EntityTypeentityType){returnlookup.get(entityType);}通常我会写privatestaticfinalMaplookup=newHashMap();static{for(MyEntityd:MyEnt

java - Protocol Buffer 3 : Enums as keys in a map

枚举不允许用作映射中的键。这里的PaxType是一个枚举,不允许用作键。enumPaxType{ADULT=0;CHILD=1;INFANT=2;}messageFlightData{mapfareType=1;} 最佳答案 这是不允许的,因为它不能很好地与proto3开放枚举语义兼容。例如,在Java中,如果您有一个Map,则键只能是定义的值之一。如果您碰巧从远程客户端/服务器接收到不在定义值集中的枚举键值,则无法将其放入Map中。此限制迫使我们要么删除具有未知枚举键的映射条目(这违反了proto3开放枚举语义),要么禁止枚举作为

java - java 枚举上的自定义字段未被序列化

我有一个Java枚举,如下所示:publicenumExecutionMode{TYPE_A,TYPE_B,TYPE_C;privateExecutionMode(){}//noargsconstr-noreallyrequiredprivatebooleanincremental;//hasget/setprivateStringsomeStr;//hasget/set}我看到反序列化后,枚举上的自定义字段丢失了。在阅读更多有关它的信息后,我得到的印象是枚举被反序列化为一个字符串,因此它的自定义字段被忽略了。如果它是真的,我是不是在滥用Enum并且应该只使用POJOistead?或者