2015-02-26 3 views
13

Kotlin पहले से ही values और valueOfमैं कोटिलन में enum के लिए "स्थैतिक" विधि कैसे बना सकता हूं?

उदाहरण के लिए की तरह enum वर्ग के लिए "स्थिर" तरीकों की संख्या, मैं enum

public enum class CircleType { 
    FIRST 
    SECOND 
    THIRD 
} 

मैं कैसे इस तरह के random(): CircleType के रूप में स्थिर विधि जोड़ सकते हैं है? विस्तार कार्य इस मामले के लिए नहीं लगता है।

उत्तर

35

बस किसी भी अन्य वर्ग के साथ है, तो आपको enum कक्षा में एक वर्ग वस्तु को परिभाषित कर सकते हैं:

enum class CircleType { 
    FIRST, 
    SECOND, 
    THIRD; 
    companion object { 
    fun random(): CircleType = FIRST // http://dilbert.com/strip/2001-10-25 
    } 
} 

तो फिर तुम CircleType.random() के रूप में इस समारोह कॉल करने के लिए सक्षम हो जाएगा।

संपादित करें: एनम निरंतर प्रविष्टियों के बीच कॉमा नोट करें, और साथी ऑब्जेक्ट से पहले समापन अर्धविराम। दोनों अब अनिवार्य हैं।

+6

यदि आप जावा से स्थिर विधि के रूप में दिखाना चाहते हैं, तो आपको इसे [प्लेटफार्मस्टैटिक] के साथ भी एनोटेट करना होगा। –

+1

ऐसा लगता है कि ऐसा करने का नया तरीका "क्लास ऑब्जेक्ट" के बजाय "साथी ऑब्जेक्ट" है। http://blog.jetbrains.com/kotlin/2015/03/follw-up-new-class-object-syntax/ –

+1

क्या यह अभी भी काम करता है? यह मेरे लिए नहीं है! –

संबंधित मुद्दे