通常,switch语句中不需要default。但是,在以下情况下,只有当我取消注释默认语句时,代码才能成功编译。谁能解释一下为什么?publicenumXYZ{A,B};publicstaticStringtestSwitch(XYZxyz){switch(xyz){caseA:return"A";caseB://default:return"B";}} 最佳答案 你必须取消注释default的原因是你的函数说它返回一个String,但如果你只有case为A和B定义的标签,那么如果您传入任何其他内容,该函数将不会返回值。Java要求
通常,switch语句中不需要default。但是,在以下情况下,只有当我取消注释默认语句时,代码才能成功编译。谁能解释一下为什么?publicenumXYZ{A,B};publicstaticStringtestSwitch(XYZxyz){switch(xyz){caseA:return"A";caseB://default:return"B";}} 最佳答案 你必须取消注释default的原因是你的函数说它返回一个String,但如果你只有case为A和B定义的标签,那么如果您传入任何其他内容,该函数将不会返回值。Java要求
在Java中你可以:publicenumEnum{ONE{publicStringmethod(){return"1";}},TWO{publicStringmethod(){return"2";}},THREE{publicStringmethod(){return"3";}};publicabstractStringmethod();}你如何在Scala中做到这一点?编辑/有用的链接:https://github.com/rbricks/itemizedhttp://pedrorijo.com/blog/scala-enums/ 最佳答案
在Java中你可以:publicenumEnum{ONE{publicStringmethod(){return"1";}},TWO{publicStringmethod(){return"2";}},THREE{publicStringmethod(){return"3";}};publicabstractStringmethod();}你如何在Scala中做到这一点?编辑/有用的链接:https://github.com/rbricks/itemizedhttp://pedrorijo.com/blog/scala-enums/ 最佳答案
我注意到以下代码段...@Overridepublicbooleanequals(ObjectotherObject){...}...不允许用于枚举,因为方法equals(Objectx)在Enum中被定义为final.为什么会这样?我想不出任何需要为Enum覆盖equals(Object)的用例。我只是想知道这种行为背后的原因。 最佳答案 除了returnthis==other之外的任何东西都会违反直觉并违反theprincipleofleastastonishment.当且仅当它们是同一个对象并且覆盖此行为的能力容易出错时,两个
我注意到以下代码段...@Overridepublicbooleanequals(ObjectotherObject){...}...不允许用于枚举,因为方法equals(Objectx)在Enum中被定义为final.为什么会这样?我想不出任何需要为Enum覆盖equals(Object)的用例。我只是想知道这种行为背后的原因。 最佳答案 除了returnthis==other之外的任何东西都会违反直觉并违反theprincipleofleastastonishment.当且仅当它们是同一个对象并且覆盖此行为的能力容易出错时,两个
我有一个枚举:publicenumAppEnums{SERVICE_ERROR,CONNECTION_ERROR;}我想在AndroidAnnotation的intDef中使用它:@IntDef({AppEnums.CONNECTION_ERROR,AppEnums.SERVICE_ERROR})public@interfaceServiceErrors{}错误显示:incompatibletypesfound,required:'long'我能用这种不兼容性做些什么?我不想手动处理AppEnum参数的值,Enum通常会自动创建值。AppEnums.CONNECTION_ERROR.o
我有一个枚举:publicenumAppEnums{SERVICE_ERROR,CONNECTION_ERROR;}我想在AndroidAnnotation的intDef中使用它:@IntDef({AppEnums.CONNECTION_ERROR,AppEnums.SERVICE_ERROR})public@interfaceServiceErrors{}错误显示:incompatibletypesfound,required:'long'我能用这种不兼容性做些什么?我不想手动处理AppEnum参数的值,Enum通常会自动创建值。AppEnums.CONNECTION_ERROR.o
是否有任何Java8方法或简单方法,将枚举值作为字符串列表返回,例如:ListsEnum=getEnumValuesAsString(); 最佳答案 您可以这样做(Java8之前):ListenumValues=Arrays.asList(Enum.values());或ListenumValues=newArrayList(EnumSet.allOf(Enum.class));使用Java8特性,您可以将每个常量映射到其名称:ListenumNames=Stream.of(Enum.values()).map(Enum::name
是否有任何Java8方法或简单方法,将枚举值作为字符串列表返回,例如:ListsEnum=getEnumValuesAsString(); 最佳答案 您可以这样做(Java8之前):ListenumValues=Arrays.asList(Enum.values());或ListenumValues=newArrayList(EnumSet.allOf(Enum.class));使用Java8特性,您可以将每个常量映射到其名称:ListenumNames=Stream.of(Enum.values()).map(Enum::name