草庐IT

java - 在 Java 中完全切换枚举会产生 "Missing return statement"错误

假设,我们有switch语句,它完全涵盖了枚举参数的所有可能情况,并且也有null检查,不会因为"Missingreturnstatement"而被编译。enumFoo{ONE,TWO}intfooToInt(Foofoo){if(foo==null){thrownewNullPointerException();}switch(foo){caseONE:return1;caseTWO:return2;}}我知道,从default案例或枚举之后抛出异常,或者访问枚举元素而不是switch将解决问题。但我不明白这种行为的技术原因:显然,没有可能的执行分支不会导致return或throw。

java - Java 中枚举值的“子集”

我有一个Java类,其形式如下:-publicclassAngle{ANGLE_TYPEangleType;ANGLE_TYPEdefaultAngleType=ANGLE_TYPE.RAD;enumANGLE_TYPE{DEG,RAD,DEGMIN,DEGMINSEC;}}可以看出,该类定义了一个“枚举”。我的问题是关于实例变量“defaultAngleType”。我希望情况如此,以便只能为该变量分配值RAD或DEG,否则抛出错误。知道如何实现吗? 最佳答案 您可以使用EnumSet.例如:Setallowed=EnumSet.o

java - 如何在枚举中添加特殊字符?

我这里有个问题。我创建了SpecialCharacterField.java-一个枚举类,它将列出一些特殊字符。SpecialCharacterField.javapackagebp.enumfield;publicenumSpecialCharacterField{+,#;}在我的eclipse上:publicenumSpecialCharacterField{有一个错误,它说:Syntaxerror,insert"EnumBody"tocompleteEnumDeclaration请帮忙。提前致谢。 最佳答案 做这样的事情,pu

java - Protocol Buffer 和枚举组合?

这是我的原型(prototype)文件:messageMSG{requiredMsgCodesMsgCode=1;optionalint64Serial=2;//UniqueIDnumberforthisperson.requiredint32From=3;requiredint32To=4;//blabla...enumMsgCodes{MSG=1;FILE=2;APPROVE=4;ACK=8;ERROR_SENDING=16;WORLD=32;}}在我的C#中,我正在尝试:msg=msg.ToBuilder().SetMsgCode(msg.MsgCode|MSG.Types.Ms

java - Java 方法可以返回 Enum 类型吗?

我可能是错的,但我是从Whycan'tenumsbedeclaredlocallyinamethod?猜测的那,因为Java中的枚举不能在本地声明,因此方法返回类型Enum是有问题的吗?我可以声明一个方法应该返回一个枚举(见下文)但是如何实现这样一个方法来返回除null以外的任何东西,或者对在方法外声明的枚举的引用?我的第一个倾向是调查为此使用泛型,但如果SO社区可以帮助我避免死胡同,我想避免任何死胡同。privateEnumresources(){returnnull;} 最佳答案 我认为您是对的,它只能返回null或在其他地方声

java - 如何使用基于 JAX-RS 的 ReSTLet 自动将 @DefaultValue 映射到枚举参数?

我有一个网络API,用户可以(也可以不)传输URL参数,例如bird、dog等。我希望将此参数映射到服务器端的枚举,例如:@POST@Path("/zoo")publicResponsecreateNewAnimal(@QueryParam("animal")@DefaultValue("CAT")AnimalTypetype)throwsException...publicenumAnimalType{BIG_BIRD,SMALL_CAT;}但它不起作用!在处理网络请求时,Enum.valueOf()被调用。当然它失败了,因为用户用作URL参数的bird与Enum中的标识符不匹配(A

java - Java 1.6 中的枚举类主体特性

enumCoffeeSize{BIG(8),HUGE(10),OVERWHELMING(16){publicStringgetLidCode(){return"A";}};privateintounces;publicintgetOunces(){returnounces;}CoffeeSize(intounces){this.ounces=ounces;}publicStringgetLidCode(){return"B";}}这是K&B6书中的SCJP1.6问题。这是作为SCJP6的一个特性的常量特定类主体的示例。我如何执行它并查看结果输出?我有两个问题:我的Javamain方法是

Java枚举自动递增条目?

Java是否允许像好的C甚至C#这样的东西,你可以定义一个枚举,其中的字段值自动增长,并从一个可选的给定值开始?例如在C或C#中:enumFoo{A=10,B,C,D=5000,E,Fish};产量A=10,B=11,C=12,D=5000,E=5001,鱼=5002。 最佳答案 在Java中,您根本无法显式指定序数值。它们总是从0开始自动递增,无法控制。如果你想要其他自定义值,你需要将它们放在构造函数调用中并自己存储。您可以获得自动增量,但它实在是太恶心了:importjava.util.EnumSet;//Pleasedon't

java - Java编程实践: stacking enums and enum constructors,和子类化哪个更好?

给定有限数量的不同种类的项目,用堆叠枚举和枚举构造函数表示它们更好,还是将它们子类化更好?还是有更好的方法?为了给您一些背景信息,在我的小型RPG程序(具有讽刺意味的是它应该很简单)中,一个角色的元素栏中有不同种类的元素。项目根据其类型、用途和效果而有所不同。例如,元素栏中的一项是名为Gremlin的法术卷轴,可调整Utility属性。另一个项目可能是一把名为Mort的剑,用于战斗并造成伤害。在我的RPG代码中,我现在尝试了两种表示库存项目的方法。一种方法是子类化(例如,InventoryItem->Spell->AdjustingAttributes;InventoryItem->W

java - 检查枚举类型是否包含具有给定名称的常量

我的代码中有多个枚举:publicenumFirst{a,b,c,d;}publicenumSecond{e,f,g;}我希望有一种方法可以使用valueOf()检查值是否存在于任何枚举中,而无需为每种枚举类型编写一个。例如(这段代码不运行):publicbooleanenumTypeContains(Enume,Strings){try{e.valueOf(s);}catch(IllegalArgumentExceptioniae){returnfalse;}returntrue;}用法:enumTypeContains(First,"a");//returnstrueenumTyp