खोज…
टिप्पणियों
जावा की तरह, कोटलिन में एनुम कक्षाओं में सिंथेटिक तरीके हैं जो परिभाषित एनम स्थिरांक को सूचीबद्ध करने और उनके नाम से एक एनम निरंतर प्राप्त करने की अनुमति देते हैं। इन विधियों के हस्ताक्षर निम्नानुसार हैं ( EnumClass
वर्ग का नाम EnumClass
)
EnumClass.valueOf(value: String): EnumClass
EnumClass.values(): Array<EnumClass>
valueOf()
पद्धति एक IllegalArgumentException
फेंकता है यदि निर्दिष्ट नाम कक्षा में परिभाषित किसी भी निरंतरता से मेल नहीं खाता है।
प्रत्येक एनुम स्थिरांक में अपने नाम और स्थिति को एनम वर्ग घोषणा में प्राप्त करने के गुण होते हैं:
val name: String
val ordinal: Int
एनुम स्थिरांक भी तुलनात्मक इंटरफ़ेस को लागू करते हैं, प्राकृतिक क्रम के क्रम में वे एनम वर्ग में परिभाषित किए जाते हैं।
प्रारंभ
किसी भी अन्य वर्गों के रूप में Enum कक्षाएं एक कंस्ट्रक्टर हो सकती हैं और आरंभिक हो सकती हैं
enum class Color(val rgb: Int) {
RED(0xFF0000),
GREEN(0x00FF00),
BLUE(0x0000FF)
}
कार्य और गुण
Enum classes में सदस्य (यानी गुण और कार्य) भी घोषित कर सकते हैं। अंतिम एनम ऑब्जेक्ट और पहले सदस्य घोषणा के बीच एक अर्धविराम ( ;
) रखा जाना चाहिए।
यदि कोई सदस्य abstract
, तो एनम ऑब्जेक्ट को इसे लागू करना चाहिए।
enum class Color {
RED {
override val rgb: Int = 0xFF0000
},
GREEN {
override val rgb: Int = 0x00FF00
},
BLUE {
override val rgb: Int = 0x0000FF
}
;
abstract val rgb: Int
fun colorString() = "#%06X".format(0xFFFFFF and rgb)
}
सरल एनम
enum class Color {
RED, GREEN, BLUE
}
प्रत्येक enum स्थिरांक एक वस्तु है। Enum constants को अल्पविराम से अलग किया जाता है।
अस्थिरता
एनमोस म्यूटेबल हो सकते हैं, यह एक सिंगलटन व्यवहार प्राप्त करने का एक और तरीका है:
enum class Planet(var population: Int = 0) {
EARTH(7 * 100000000),
MARS();
override fun toString() = "$name[population=$population]"
}
println(Planet.MARS) // MARS[population=0]
Planet.MARS.population = 3
println(Planet.MARS) // MARS[population=3]