在built_value我找到了examplehowtomakeenums.所以我有点困惑。因为我没有立即看到使用built_value枚举有什么好处。有人知道吗?我忽略了什么? 最佳答案 序列化是一回事;另一个主要问题是它们是适当的类:您可以向它们添加代码,它们可以实现接口(interface)。在这种方式下,它们很像Java的枚举。 关于enums-与语言中的普通枚举相比,built_value枚举有什么好处,我们在StackOverflow上找到一个类似的问题:
有没有一种简单的方法可以将整数值转换为枚举?我想从共享首选项中检索一个整数值并将其转换为枚举类型。我的枚举是:enumThemeColor{red,gree,blue,orange,pink,white,black};我想轻松地将整数转换为枚举:finalprefs=awaitSharedPreferences.getInstance();ThemeColorc=ThemeColor.convert(prefs.getInt('theme_color'));//somethinglikethat 最佳答案 intidx=2;prin
如何创建带有循环引用的枚举类?简单示例(取自thisJavaquestion):enumclassHand(valbeats:Hand){ROCK(SCISSORS),//Enumentry'SCISSORS'isuninitializedherePAPER(ROCK),SCISSORS(PAPER);} 最佳答案 由于val属性禁止重新分配,因此此问题通常难以解决,并且通常表明您的数据模型存在问题。有关更广泛背景下的讨论,请参阅thisquestion/answer(s).然而,这个简单的例子可以使用valproperty来解决使
我有一个由Gson序列化/反序列化的枚举:enumclassPacketType{NONE;[SerializedName("request")]REQUEST;[SerializedName("response")]RESPONSE;[SerializedName("event")]EVENT;}不幸的是,我注意到Gson忽略了SerializedName注释并使用大写名称作为枚举值。我决定找出为什么序列化不能按预期工作,并发现Kotlin删除了枚举值的所有注释。如何使这些注释出现在生成的字节码中? 最佳答案 对我来说似乎是一个错
我正在尝试使用以下函数扩展String类型的枚举类,但无法像这样在调用站点使用它:fun>Class.join(skipFirst:Int=0,skipLast:Int=0):String{returnthis.enumConstants.drop(skipFirst).dropLast(skipLast).map{e->e.name}.joinToString()}MyStringEnum.join(1,1);我在这里做错了什么? 最佳答案 我建议以下解决方案:fun>KClass.join(skipFirst:Int=0,ski
有没有办法在没有反射的情况下在Kotlin中进行类似的工作?inlinefun>safeValueOf(type:String?):T?{returnjava.lang.Enum.valueOf(T::class.java,type)}以下示例无法编译,原因是:TypeparameterboundforTininlinefun>safeValueOf(type:kotlin.String?):T?isnotsatisfied:inferredtypeTestEnum?isnotasubtypeofkotlin.EnumenumclassTestEnumfunmain(){valvalu
关注thedocumentation,我创建了一个枚举类:enumclassBitCountpublicconstructor(valvalue:Int){x32(32),x64(64)}然后,我尝试在某个函数中声明一个变量:valbitCount:BitCount=BitCount(32)但是有编译错误:Error:(18,29)Kotlin:Enumtypescannotbeinstantiated如何声明BitCount类型的变量并从Int对其进行初始化? 最佳答案 如其他答案所述,您可以引用按名称存在的enum的任何值,但不
Kotlin已经有许多用于枚举类的“静态”方法,例如values和valueOf例如我有枚举publicenumclassCircleType{FIRSTSECONDTHIRD}如何添加静态方法,例如random():CircleType?扩展函数似乎不适用于这种情况。 最佳答案 就像任何其他类一样,您可以在枚举类中定义类对象:enumclassCircleType{FIRST,SECOND,THIRD;companionobject{funrandom():CircleType=FIRST//http://dilbert.com/
我在本地大学的夜间类(class)中获得了C#背景,因此我开始使用C++。习惯语法很痛苦。在编码技术方面,我也很年轻。从我的WinMain函数中,我希望能够访问一个使用我在另一个类中声明的枚举的变量。(insidecore.h)classCore{public:enumGAME_MODE{INIT,MENUS,GAMEPLAY};GAME_MODEgameMode;Core();~Core();...OtherFunctions();};(insidemain.cpp)Corecore;intWINAPIWinMain(...){...startupcodehere...core.ga
我在C++中使用cppreference阅读了有关枚举声明的内容。.然后我制作了枚举类并使用std::is_class检查它是否是类类型。#includeenumclassEnum{red=1,blue,green};intmain(){std::cout::value然后我在Linux平台的G++编译器中编译运行,它打印出false值。那么enum是否是类类型?如果enum是类类型,那为什么我会得到false值?p> 最佳答案 enumclass不是class定义-关键字的组合用于定义一个scopedenumeration,它是一