Kotlin 了解此enum语句的语法

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中遇到了以下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_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类的一个实例”是最重要的外卖。医生们可不是这么说的。所以你的解释更好。谢谢