草庐IT

java - 使用枚举的序数是一种好习惯吗?

我有一个枚举:publicenumPersons{CHILD,PARENT,GRANDPARENT;}使用ordinal()方法检查枚举成员之间的“层次结构”有什么问题吗?我的意思是-使用它时是否有任何缺点,不包括冗长,将来有人可能会意外更改顺序。或者这样做更好:publicenumPersons{CHILD(0),PARENT(1),GRANDPARENT(2);privateIntegerhierarchy;privatePersons(finalIntegerhierarchy){this.hierarchy=hierarchy;}publicIntegergetHierarch

java - 使用枚举的序数是一种好习惯吗?

我有一个枚举:publicenumPersons{CHILD,PARENT,GRANDPARENT;}使用ordinal()方法检查枚举成员之间的“层次结构”有什么问题吗?我的意思是-使用它时是否有任何缺点,不包括冗长,将来有人可能会意外更改顺序。或者这样做更好:publicenumPersons{CHILD(0),PARENT(1),GRANDPARENT(2);privateIntegerhierarchy;privatePersons(finalIntegerhierarchy){this.hierarchy=hierarchy;}publicIntegergetHierarch

java - 为什么枚举实现不能访问枚举类中的私有(private)字段

我只是通过说如何解决编译问题来回答这个问题:Howtousefieldsinjavaenumbyoverridingthemethod?但我不明白为什么首先会发生错误。下面是写成枚举的例子:publicenumMyEnum{FIRST{@OverridepublicStringdoIt(){return"1:"+someField;//error}},SECOND{@OverridepublicStringdoIt(){return"2:"+super.someField;//noerror}};privateStringsomeField;publicabstractStringdo

java - 为什么枚举实现不能访问枚举类中的私有(private)字段

我只是通过说如何解决编译问题来回答这个问题:Howtousefieldsinjavaenumbyoverridingthemethod?但我不明白为什么首先会发生错误。下面是写成枚举的例子:publicenumMyEnum{FIRST{@OverridepublicStringdoIt(){return"1:"+someField;//error}},SECOND{@OverridepublicStringdoIt(){return"2:"+super.someField;//noerror}};privateStringsomeField;publicabstractStringdo

Java 枚举 getDeclaringClass 与 getClass

JavaEnum类的文档说明了以下关于getDeclaringClass的内容:ReturnstheClassobjectcorrespondingtothisenumconstant'senumtype.Twoenumconstantse1ande2areofthesameenumtypeifandonlyife1.getDeclaringClass()==e2.getDeclaringClass().(ThevaluereturnedbythismethodmaydifferfromtheonereturnedbytheObject.getClass()methodforenumc

Java 枚举 getDeclaringClass 与 getClass

JavaEnum类的文档说明了以下关于getDeclaringClass的内容:ReturnstheClassobjectcorrespondingtothisenumconstant'senumtype.Twoenumconstantse1ande2areofthesameenumtypeifandonlyife1.getDeclaringClass()==e2.getDeclaringClass().(ThevaluereturnedbythismethodmaydifferfromtheonereturnedbytheObject.getClass()methodforenumc

java - 有没有办法在 Java 中进行按位或枚举?

我正在使用状态机,当针对大量可能的状态进行测试时,代码变得非常冗长。enumMood{HAPPY,SAD,CALM,SLEEPY,OPTIMISTIC,PENSIVE,ENERGETIC;}有没有办法做到这一点:if(currentMood==(HAPPY|OPTIMISTIC|ENERGETIC){}而不是这个:if(currentMood==HAPPY||currentMood==OPTIMISTIC||currentMood==ENERGETIC){}或者在这种情况下坚持使用整数和标志会更好吗? 最佳答案 也许使用EnumSe

java - 有没有办法在 Java 中进行按位或枚举?

我正在使用状态机,当针对大量可能的状态进行测试时,代码变得非常冗长。enumMood{HAPPY,SAD,CALM,SLEEPY,OPTIMISTIC,PENSIVE,ENERGETIC;}有没有办法做到这一点:if(currentMood==(HAPPY|OPTIMISTIC|ENERGETIC){}而不是这个:if(currentMood==HAPPY||currentMood==OPTIMISTIC||currentMood==ENERGETIC){}或者在这种情况下坚持使用整数和标志会更好吗? 最佳答案 也许使用EnumSe

java - 如何获取枚举的可能项目数?

是否有一种内置方法可以使用Myenum.length,之类的方式获取Enum的项目数或者我是否必须自己实现一个函数intsize()硬编码元素的数量? 最佳答案 是的,您可以使用Enum.values()方法获取枚举值数组,然后使用length属性。publicclassMain{enumWORKDAYS{Monday,Tuesday,Wednesday,Thursday,Friday;}publicstaticvoidmain(String[]args){System.out.println(WORKDAYS.values().l

java - 如何获取枚举的可能项目数?

是否有一种内置方法可以使用Myenum.length,之类的方式获取Enum的项目数或者我是否必须自己实现一个函数intsize()硬编码元素的数量? 最佳答案 是的,您可以使用Enum.values()方法获取枚举值数组,然后使用length属性。publicclassMain{enumWORKDAYS{Monday,Tuesday,Wednesday,Thursday,Friday;}publicstaticvoidmain(String[]args){System.out.println(WORKDAYS.values().l