Kotlin 了解此enum语句的语法
我在enum中遇到了以下Kotlin代码:Kotlin 了解此enum语句的语法,kotlin,Kotlin,我在enum中遇到了以下Kotlin代码: enum class Section(val position: Int, val textKey: Int, val fragment: Fragment) { GUIDE(0, R.string.main_pager_guide, QotGuideFragment()), LEARN(1, R.string.main_pager_learn, QotLearnFragment()), ME(2, R.string.main
enum class Section(val position: Int, val textKey: Int, val fragment: Fragment) {
GUIDE(0, R.string.main_pager_guide, QotGuideFragment()),
LEARN(1, R.string.main_pager_learn, QotLearnFragment()),
ME(2, R.string.main_pager_me, QotToBeVisionFragment()),
PREPARE(3, R.string.main_pager_prepare, QotPrepareFragment()),
;
}
但是,当我查看Enum上的Kotlin文档时,我没有看到任何显示这种语法的内容。该行:
指南(0,R.string.main_pager_指南,QotGuideFragment())
我不明白这3个参数是如何使用的。此外,enum类部分显示了3个似乎未使用的构造函数参数
enum的官方文件位于:
发件人:每个枚举常量都是一个对象 因此,
GUIDE
是Section
类的一个实例,表示初始化为
GUIDE(0, R.string.main_pager_guide, QotGuideFragment())
您可以获得初始化的指南
的值,如下所示:
val guidePosition = Section.GUIDE.position
val guideTextKey = Section.GUIDE.textKey
val guideFragment = Section.GUIDE.fragment
通常您的枚举将是这样的
enum class Section() {
GUIDE,
LEARN,
ME,
PREPARE
}
没有任何参数
但在您的示例中,枚举的基本构造函数也具有设置为属性的参数
enum class Section(**val** position: Int, **val** textKey: Int, **val** fragment: Fragment)
在构造函数中使用关键字val设置为类的属性
那么它已经
GUIDE(0, R.string.main_pager_guide, QotGuideFragment()),
LEARN(1, R.string.main_pager_learn, QotLearnFragment()),
ME(2, R.string.main_pager_me, QotToBeVisionFragment()),
PREPARE(3, R.string.main_pager_prepare, QotPrepareFragment())
因此,对于
GUIDE
0->position、R.string.main\u pager\u GUIDE->textKey和QotGuideFragment->fragment,节构造函数有3个参数,GUIDE()调用传递3个匹配类型的参数,这应该会让人大吃一惊。在你链接到的文档的第二个示例中使用了相同的语法,它只是一个简单的版本,所以这被认为是一个匿名类吗?不,我不确定你是如何得出这个结论的,这在Java中也是可能的。这里的一个例子——“GUIDE是Section类的一个实例”是最重要的外卖。医生们可不是这么说的。所以你的解释更好。谢谢