草庐IT

Java 枚举(Enums)解析:提高代码可读性与易维护性

接口在Java中,实现抽象的另一种方式是使用接口。接口定义接口是一个完全抽象的类,用于将具有空方法体的相关方法分组://接口interfaceAnimal{publicvoidanimalSound();//接口方法(没有具体实现体)publicvoidrun();//接口方法(没有具体实现体)}实现接口要访问接口方法,必须使用implements关键字(而不是extends)由另一个类“实现”(有点类似于继承)。接口方法的具体实现体由“实现”类提供://接口interfaceAnimal{publicvoidanimalSound();//接口方法(没有具体实现体)publicvoidsle

java - 带有接口(interface)的枚举 - 一般如何做?

如果我有一组枚举,并且想让它们都实现一个接口(interface),这是通用的正确方法吗?枚举:publicenumMentalSkillimplementsSkillType{ACADEMICS,COMPUTER,CRAFTS,INVESTIGATION,MEDICINE,OCCULT,POLITICS,SCIENCE;privatestaticfinalintUNTRAINED_PENALTY=-3;@OverridepublicSkillTypefromValue(Stringvalue){returnvalueOf(value);}@OverridepublicintgetUn

java - 为什么 reflections.getSubTypesOf(Object.class) 找不到枚举?

如果我有Reflectionsreflections=newReflections("my.package",classLoader,newSubTypesScanner(false));然后这会找到我的枚举类Set>enums=reflections.getSubTypesOf(Enum.class);但这不是Set>classes=reflections.getSubTypesOf(Object.class);这有什么原因吗?可重现的例子:packagecupawntae;importorg.reflections.Reflections;importorg.reflections

java - 将 Singleton 对象作为枚举元素的 Scala 枚举以及迭代它们的可能性?

我已经看过ScalaquestionaboutemulatingJava'senum和caseclassesvs.Enumeration但这似乎付出了太多的努力却获得了太少的yield。基本上,我希望有一个values方法返回DayOfWeek的所有单例对象,而无需重复我自己几次。我的代码应该是这样的:objectDayOfWeekextendsMyEnum{objectMONDAYextendsDayOfWeek(1)objectTUESDAYextendsDayOfWeek(2)objectWEDNESDAYextendsDayOfWeek(3)objectTHURSDAYexte

java - 枚举参数的编译时验证

有一个带有三个枚举类型参数的构造函数:publicSomeClass(EnumType1enum1,EnumType2enum2,EnumType3enum3){...}枚举类型的三个参数不允许与所有可能的值组合:例子:EnumType1.VALUE_ONE,EnumType2.VALUE_SIX,EnumType3.VALUE_TWENTYisavalidcombination.但是下面的组合是无效的:EnumType1.VALUE_TWO,EnumType2.VALUE_SIX,EnumType3.VALUE_FIFTEEN每个EnumType都知道它可以与哪些值组合:EnumTy

java - java 如何确保每个 JVM 只有一个枚举实例

Java如何在内部确保每个JVM只存在一个ENUM实例?它是在应用程序启动时创建的,从那时起当多个线程访问它时,它只会返回启动时创建的对象吗?还是实现了某种类似于单例模式的双重同步,即使多个线程访问它也只会创建一个实例? 最佳答案 正如您在thisanswer中所读到的那样枚举实例是静态类字段,因此在您第一次访问类时作为类加载的一部分进行初始化。classloadingissynchronizedinternally这样可以确保枚举实例是单例(同一个类加载器中的单例,也就是说。如果您有多个加载器加载的相同枚举,您将获得多个实例)

java - 遍历 EnumMap#entrySet

Map#entrySet上的枚举并不适用于所有Map实现,特别是EnumMap、IdentityHashMap,这里是来自JoshBloch的puzzlerpresentation(Puzzle5)的示例代码-publicclassSize{privateenumSex{MALE,FEMALE}publicstaticvoidmain(String[]args){printSize(newHashMap());printSize(newEnumMap(Sex.class));}privatestaticvoidprintSize(Mapmap){map.put(Sex.MALE,Sex

java - 枚举实践——在类内定义/单独定义,公开/私有(private)

定义枚举时什么是好的做法?例如,我有一个Person类。对于此类,我选择使用具有值MALE和FEMALE的枚举。枚举应该在Person类中定义还是单独定义?枚举应该定义为私有(private)的还是公共(public)的?此外,您是否有任何进一步的建议可以使枚举的使用尽可能灵活? 最佳答案 恕我直言,让它成为publicstaticenum里面classPerson.原因是enumGender仅适用于人,所以把它放在那里以便它们绑定(bind)在一起(如果没有人的上下文,性别就没有用)。优点:减少类膨胀如果您将Person移动到另一

java - 两个相关的枚举映射?

我有两个相关的枚举。枚举1:publicenumHttpMethodName{GET,POST,PUT,DELETE;}枚举2:publicenumProtocolOperation{CREATE(1),RETRIEVE(2),UPDATE(3),DELETE(4),NOTIFY(5);privateBigIntegeroperationId;publicBigIntegergetOperationId(){returnoperationId;}privateProtocolOperation(intoperationId){this.operationId=BigInteger.va

Java:我可以在枚举中使用两个不同的名称来算作同一事物吗?

我有一个带有基本方向(北、东、南、西)的枚举类:publicenumDirection{NORTH,EAST,SOUTH,WEST;}有没有办法可以为同一事物使用多个名称?例如这样的事情:publicenumDirection{NORTHorN,EASTorE,SOUTHorS,WESTorW;}在实践中,我想要的是能够对N或NORTH变量进行签名,并使这两个操作完全相同。例子:Directiondirection1=newDirection.NORTH;Directiondirection2=newDirection.N;//direction1==direction2