草庐IT

java - 泛型和类 <?扩展 Enum<?>>,EnumSet.allOf(class) 与 class.getEnumConstants()

我有以下BeanValidation代码可以正常工作,并允许验证注释的bean:@EnumValue(enumClass=MyTestEnum.class)privateStringfield;publicenumMyTestEnum{VAL1,VAL2;}只有当字段值为“VAL1”或“VAL2”时才会被验证。publicclassEnumNameValidatorimplementsConstraintValidator{privateSetAVAILABLE_ENUM_NAMES;@Overridepublicvoidinitialize(EnumValueenumValue){C

java - 使用 Apache BeanUtils 将字符串转换为枚举

我已经为ApacheBeanUtils库实现了一个转换器,用于将String转换为枚举常量:classEnumConverterimplementsConverter{@OverridepublicTconvert(ClasstClass,Objecto){StringenumValName=(String)o;Enum[]enumConstants=(Enum[])tClass.getEnumConstants();for(EnumenumConstant:enumConstants){if(enumConstant.name().equals(enumValName)){retur

java - 在 Java 中嵌套枚举

我想嵌套一些枚举。我代表的对象是标志,具有类型和值。类型的数量是离散的,每种类型都有一组不同的可能值。因此,如果类型A可以具有值1、2或3,而类型B可以具有值4、5、6,我希望能够执行以下操作:Flagf=Flag.A.1;f.getType()-returns"A"f.getValue()-returns"1"Flagf2=Flag.A.4;--Syntaxerror.试图在枚举中嵌套枚举让我发疯了——我正在尝试的是可能的——我是否需要完全放弃枚举并手工制作一个包含静态成员的静态类?到目前为止,我的最大努力是:publicclassFlag{enumAextendsFlag{ONE(

java - 用 Java 中的类替换枚举结构是否仍然相关?

我正在阅读JoshuaBloch于2008年出版的EffectiveJava,其中一个技巧是用类替换枚举结构。这是书中显示的示例。publicclassSuit{privatefinalStringname;publicSuit(Stringname){this.name=name;}publicStringtoString(){returnname;}publicstaticfinalSuitCLUBS=newSuit("clubs");publicstaticfinalSuitDIAMONDS=newSuit("diamonds");publicstaticfinalSuitHEA

java - HQL 中的常量枚举值

我有一个有效的查询,我需要通过使用常量枚举值进行过滤来修改它。现在看起来是这样的:publicstaticfinalStringvenueQuery="selectdistinctvfrompackage.Venuev"+""+"WHEREv.venueType=package.enums.VenueType.VOUCHER_PROVIDER";以这种方式改变数据会导致org.hibernate.hql.internal.ast.QuerySyntaxException:unexpectedtoken列定义是这样的:@Enumerated(EnumType.STRING)@Column

java - 具有相反方向的枚举

这个问题在这里已经有了答案:HowcanIassociateanEnumwithitsoppositevalue,asincardinaldirections(North-South,East-West,etc)?(4个答案)关闭4年前。我目前正在开发一个地牢游戏项目,该项目由多个相互连接的房间组成。根据您所在的房间,您可以通过选择方向(北、南、东、西)。我已经用Enum类表示方向,我正在寻找一种方法来实现North与South相反>,East为West(依此类推...),以便在游戏的最终形式中创建所有房间的布局。这是我的Enum类:publicenumDirection{NORTH,

java - 如何将值映射回枚举?

给定一个枚举,其中每个实例都与某个值相关联:publicenumSQLState{SUCCESSFUL_COMPLETION("00000"),WARNING("01000");privatefinalStringcode;SQLState(Stringcode){this.code=code;}}如何构造一个Map以进行高效的反向查找?我尝试了以下方法:publicenumSQLState{SUCCESSFUL_COMPLETION("00000"),WARNING("01000");privatefinalStringcode;privatestaticfinalMapcodeTo

java - 为什么 EnumSet 或 EnumMap 可能比它们的散列对应物更高效?

以下内容来自JavadocofEnumMap的实现说明部分:Implementationnote:Allbasicoperationsexecuteinconstanttime.Theyarelikely(thoughnotguaranteed)tobefasterthantheirHashMapcounterparts.我在EnumSet的java文档中也看到了类似的行。我想知道为什么EnumSets和EnumMaps比它们的散列对应物更快? 最佳答案 EnumSet由位数组支持。由于您可以放入的不同元素的数量EnumSet事先知

java - 具有接口(interface)的枚举类成员无法在内部找到方法

我遇到了一个奇怪的问题,我不确定这是编译器问题还是我对带有接口(interface)的枚举的理解。我正在使用IntelliJIDEA12构建一个Android项目,我有一个这样的类:publicclassClassWithEnum{privateMyEnummyEnum;//TryingtoaccessitinternallyherethrowstheerrorpublicbooleanisActionable(){returnmyEnum.isActionable();}publicenumMyEnumimplementsAction{ACTIONABLE(){@Overridepu

java - Scala 模式匹配 Java 枚举值

我有我的java枚举,例如:FOO("foo")、BAR("bar")...我有一个getValue()方法来返回枚举的值"foo"和"bar"并且这必须在Java中.另一方面,我必须在Scala中匹配这个:resultmatch{case"foo"=>我正在尝试:resultmatch{caseEnum.FOO.getValue()=>我收到这个错误:methodgetValueisnotacaseclassconstructor,nordoesithaveanunapply/unapplySeqmethod我不太确定这里发生了什么,因为我的getValue()方法返回一个Strin