关于规则鱿鱼:不应使用S109魔数(MagicNumber)Java中枚举的构造函数中不应该允许有数字吗?在我看来,下面的代码不应该违反规则。publicenumColor{RED(42),GREEN(123456),BLUE(666);publicfinalintcode;Color(intcolorCode){this.code=colorCode;}}我正在使用Sonarjava插件版本3.3 最佳答案 3.4版本会修复在SonarSource上查看此问题:http://jira.sonarsource.com/browse/
我有几个可以通过int找到的枚举。这是通过枚举上的静态方法完成的。例如:enumFoo{A,B,C,D,...;publicstaticFoofromInt(inti){switch(i){case15:returnA;case42:returnB;...}}enumBar{BLA,BOO,BEE,...;publicstaticBarfromInt(inti){switch(i){case78:returnBLA;case22:returnBOO;...}}...现在在一些代码中,我有一个泛型类型T,它保证是这些枚举之一,我有一个整数i。如何调用fromInt方法并通过值i获取枚举实
我需要在PB消息定义之外存储枚举。有可能吗?怎么办? 最佳答案 这是可能的。看thisthread获取更多信息。我喜欢在单独的.proto文件中定义枚举的建议。喜欢枚举.protoenumA{FIRST=1;SECOND=2;}enumB{...}其他.protoimport"enums.proto";messageSOMEMESSAGE{requiredAmyenum=1;} 关于java-是否可以将外部枚举(外部消息定义)与ProtocolBuffer一起使用?,我们在StackOv
我编写了一个Java枚举,其中的值具有各种属性。这些属性可以通过以下任何一种方式存储:使用字段:enumEenum{V1(p1),V2(p2);privatefinalAattr;publicAattr(){returnattr;}privateEenum(Aattr){this.attr=attr;}}使用抽象方法:enumEenum{V1{publicAattr(){returnp1;}},V2{publicAattr(){returnp2;}}publicabstractAattr();}使用类级别map:enumEenum{V1,V2;publicAattr(){returna
据我了解,内部枚举在Java中始终是显式或隐式静态的。这意味着我无法从内部枚举类访问实例字段。publicclassInnerEnum{privateenumSomeInnerEnum{VALUE1(){@OverridepublicvoiddoSomething(){//ERROR:WON'TCOMPILE//Cannotmakestaticreference//tonon-staticfieldiSystem.out.println(i);}},VALUE2(){@OverridepublicvoiddoSomething(){//dosomethingelsewithi}};pu
我有一个混合了Java/Scala的项目,它是使用Scala库的JavaGUI代码。有没有一种方法可以编写Scala代码,使其在编译时发出Java枚举?到目前为止,我尝试过的方法(密封案例类、扩展枚举)似乎生成了普通类,这使得从Java中使用它们比直接使用枚举要复杂得多。 最佳答案 为什么不能用Java编写enum类?混合源代码(即Java+Scala)项目是完全可行的... 关于java-Scala-Java互操作:canScalaemitenumsinbytecodeforJavat
免责声明:我不会说我是最有经验的Java人。可能有更简单的方法来完成示例中的操作。但这是一个关于将字符串条目转换为枚举类而不是枚举变量的问题。我已尽力解释。这是我想做的事情的简单版本。我将有两个不同的枚举,我想根据用户的需求选择一个或另一个。在代码中,这方面的例子是publicenumLetters{A,B,C,D,E,...,X,Y,Z}publicenumNumbers{ONE,TWO,THREE,...,EIGHT,NINE,TEN}publicstaticvoidmain(String[]args){System.out.println("Enterinyouchoice,le
我正在使用这样的枚举单例模式:publicenumLicenseLoaderimplementsClientLicense{INSTANCE;/***@returnaninstanceofClientLicense*/publicstaticClientLicensegetInstance(){return(ClientLicense)INSTANCE;}...restofcode}现在我想返回接口(interface)并隐藏我们实际使用枚举的事实。我希望客户端使用getInstance()而不是LicenseLoader.INSTANCE,因为有一天我可能会在必要时决定使用不同的模式
假设我有一个Enum定义如下:publicenumSample{//supposeAClass.getValue()returnsanintA(AClass.getValue()),B(AClass.getValue()),C(AClass.getValue());privateint_value;privateSample(int_val){this._value=_val;}publicintgetVal(){return_value;}我可以使用Sample.A或Sample.A.getAVal()毫无问题地提取值。现在假设AClass.getValue()可以接受一个参数来返回
我正在为用户偏好创建一个商店,用户可以为固定数量的偏好设置值。首选项(设置)的名称存储为枚举:publicenumUserSettingName{FOO,BAR,ETC}我希望能够做的是存储一个带有名称的值类型,以便服务将使用正确的Java类型存储用户的值。例如,FOO可能是Long,而BAR可能是String。到目前为止,我们将所有值存储为String,然后手动将这些值转换为适当的Java类型。这导致到处都是try/catchblock,而在服务中只有一个try/catch更有意义。我知道枚举不能有通用类型,所以我一直在玩:publicenumUserSettingName{FOO(