草庐IT

java - 如何通过属性获取枚举类型?

我写了一个枚举类,我想要么按类型获取属性,要么按属性获取类型,但这似乎不可能。publicenumAreaCode{area1(7927),area2(7928),area3(7929);privatefinalintac;AreaCode(intac){this.ac=ac;}intareaCode(){returnac;}AreaCodearea(intn){switch(n){case7927:returnAreaCode.area1;case7928:returnAreaCode.area2;case7929:returnAreaCode.area3;}}}上面的代码不会编译。

java - 在 GWT-RPC 中使用嵌套枚举

我有一个带有嵌套枚举的枚举(我想将其设为私有(private)),但是当我这样做时,GWT告诉我嵌套枚举不可见并抛出异常。publicenumOuterEnum{A(NestedEnum.X),B(NestedEnum.Y),C(NestedEnum.X);NestedEnumnestedValue;privateOuterEnum(NestedEnumnv){nestedValue=nv;}privateenumNestedEnum{X,Y;}}如果我从嵌套的枚举中删除private修饰符,那么代码就可以工作了。为什么GWT不允许嵌套枚举使用private修饰符?有解决方法吗?

java - JVM 可以在运行时优化一个不变的枚举方法吗?

JVM能否在以下场景下进行运行时优化?我们有以下情况,我们有这个接口(interface):publicinterfaceECSResource{defaultintgetFor(finalEntityentity){returnResourceRetriever.forResource(this).getFor(entity);}}以及具体的实现如:privatestaticenumTestResourcesimplementsECSResource{TR1,TR2;}JVM是否能够(在运行时)确定枚举实例(如TestResources.TR1)属于单个ResourceRetriev

Java 无法将枚举用作注释的字符串参数(例如 : Jackson)

我正在编写使用Jackson的Java代码用于JSON序列化。我必须在我的类(class)之前使用的一个注释是@JsonTypeName(/*Insertstringhere*/),以便为此类的对象提供唯一的序列化标识符。在我当前的代码中,我们通过使用来自另一个类的全局常量来设置String参数。示例:publicclassAnnotationValues{privatestaticfinalStringid1="1";privatestaticfinalStringid2="2";privatestaticfinalStringid3="3";//Andsoon...}使用这个类,我

java - 是否有更简洁的方法来检索未弃用的枚举值?

请参阅下面的代码。我有一个enum,其中一些值被标记为已弃用。我需要Collection的所有未弃用的enum值。我设法使用反射完成了任务,但对我来说它看起来太冗长了。是否有更简洁的方法来定义@Deprecated标记的存在?importjava.lang.reflect.Field;importjava.util.ArrayList;importjava.util.List;publicclassDeprecatedEnumValues{publicenumMyEnum{AA,BB,@DeprecatedCC,DD,@DeprecatedEE,}publicstaticvoidmai

java - 枚举中的内部类在 Java 中总是静态的吗?

我有一个枚举类,它包含一个Java内部类。例如(在实际代码中,有一些在枚举上声明的方法在内部使用了内部类):publicenumMyEnum{VALUE_1,VALUE_2;privatestaticclassMyInnerClass//isstatichereneededorcanitberemoved?{}}PMD告诉我不需要'static'修饰符(违反UnusedModifier规则)。这是正确的还是PMD错误?备注:Thisquestion不是重复的,它与我在这里问的相反。 最佳答案 static关键字不是多余的。您可以创建

Java:访问枚举(enum)中的常量

阅读SCJP书,我在第1章“自测”中发现了类似的内容:enumAnimals{DOG("woof"),CAT("meow"),FISH("burble");Stringsound;Animals(Strings){sound=s;}}classTestEnum{staticAnimalsa;publicstaticvoidmain(String[]args){System.out.println(a.DOG.sound+""+a.FISH.sound);//thefollowinglineisfrommeSystem.out.println(Animals.DOG.sound+""+A

java - 为什么这个转换器需要类型转换?

我需要在java中实现一个枚举到枚举的转换器:Enum_2>Enum_1,我想以通用的方式进行。所以我定义了一个接口(interface):interfaceLabelAware{StringgetLabel();TgetObject();}和Enum_1:enumEnum_1{A,B;StringgetValue(){return"whatever";}}和实现了LabelAware的Enum_2需要转换成Enum_1:enumEnum_2implementsLabelAware{C("c",Enum_1.A),D("d",Enum_1.B);privatefinalStringla

java - 处理必须子类化的单例

在问题WhatisanefficientwaytoimplementasingletonpatterninJava?获得最多赞成票的答案是,使用枚举来实现单例。很好,我理解这些论点,分别是语言优势。但是,我有一组我定义为单例但需要扩展其他类的类,这在枚举方法中是不可能的,因为枚举不能子类化。JoshuaBloch在他的幻灯片中说:Butonethingismissing—youcan’textendanenumtypeInmostcases,youshouldn’tOnecompellingusecase—operationcodes在大多数情况下,您不应该:有人可以对此进行详细说明吗

java - Processing 2.0 中的枚举

This问题是指版本1.2.1,它不会在不同的部分编译,所以它不是重复的。我想在Processing中使用枚举。我读过它们在单独的文件中工作得更好,所以我已经这样做了。此代码编译正确:enumStatus{STOPPED,MOVING};但是当我有这段代码的时候Statusstatus;在不同的文件中它给我以下错误:Unrecognizedtype:46(ENUM_DEF)我知道早期版本的Processing不支持枚举,但2.0版支持吗?如果是这样,是什么原因导致错误? 最佳答案 当您为您的枚举创建一个新标签时,您是否附加了.jav