<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 枚舉類——[kotlin.Enum](https://www.w3cschool.cn/doc_kotlin/kotlin-api-latest-jvm-stdlib-kotlin--enum-index.html) [TOC] ### 枚舉定義 **枚舉類的最基本的用法是實現類型安全的枚舉**。 ~~~ enum class Direction { NORTH, SOUTH, WEST, EAST } ~~~ 現實生活中,說星期我們知道只有“星期一、星期二、星期三、星期四、星期五、星期六、星期日”七種情況。說撲克牌花色我們知道只有“黑桃、紅心、櫻花、方塊”四種情況。說性別我們知道只有“男性、女性”。 **星期**只有**星期一、星期二、星期三、星期四、星期五、星期六、星期日**七種情況。我們可以通過接口加常量定義的方式來表示,比如我們可以這樣有如下定義,參考代碼: ``` public?interface?IWeek { ????String MON = "Mon"; ????String TUE = "Tue"; ????String WED = "Wed"; ????String THU = "Thu"; ????String FRI = "Fri"; ????String SAT = "Sat"; ????String SUN = "Sun"; } ``` Iweek的接口的特點是什么呢?就是一個類或者接口擁有有限的常量。如果一個類或者接口擁有有限的常量,除了這樣的定義方式,我們還可以選擇用更為強大的枚舉類。**因為枚舉類達到同樣的限定效果之外,還提供了更多的方法和屬屬性。** * 枚舉類通過enum關鍵字完成,enum關鍵字添加在class關鍵字的前面,枚舉的基本結構如下: ``` enum class Class{ ?? 枚舉常量1,枚舉常量2,枚舉常量3,枚舉常量4 } ``` >[info]【注意】:這是極少數Kotlin 聲明比Java 使用了更多關鍵字的例子: Kotlin 用了enum class 兩個關鍵字,而Java 只有enum 一個關鍵字。Kotlin 中,enum 是一個所謂的軟關鍵字:只有當它出現在class 前面時才有特殊的意義,在其他地方可以把它當作普通的名稱使用。與此不同的是, class 仍然是一個關鍵字,要繼續使用名稱clazz 和aClass 來聲明變量。 * **通常枚舉常量使用大寫字母表示**。 * **初始化** 因為每?個枚舉都是枚舉類的實例,因此這些實例也可以初始化,同時枚舉支持構造函數,因此可以使用構造函數來初始化: ``` enum class Color(val rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF) } ``` ### 示例 #### **示例1** 我們定義一個枚舉類Week,參考代碼: ~~~ enum class Week{ MON,TUE,WED,THU,FRI,SAT,SUN } fun printInfo(c:Week){ if (c ==Week.SAT||c==Week.SUN){ println("今天是周末") }else{ println("今天是工作日") } } fun main(args: Array<String>) { printInfo(Week.WED) } ~~~ 運行結果 ``` 今天是工作日 Process finished with exit code 0 ``` #### **示例2** ~~~ fun main(args: Array<String>) { println(Color.BLUE.rgb()) } enum class Color(val r:Int ,val g:Int ,val b:Int){ //在每個常量創建的時候指定屬性值 RED(255,0,0),ORANGE(255,165,0),YELLOW(255,255,0), GREEN(0,255,0),BLUE(0,0,255),INDIGO(75,0,130), VIOLET(238,130,238);//這里必須要有分號 //給枚舉類定義一個方法 fun rgb()=(r *256 + g) * 256 + b } ~~~ 枚舉常量用的聲明構造方法和屬性的語法與之前你看到的常規類一樣。當你聲明每個枚舉常量的時候,必須提供該常量的屬性值(參考下面的枚舉類自定義屬性)。注意這個例子向你展示了Kotlin語法中唯一必須使用分號的地方: 如果要在枚舉類中定義任何方法,就要使用分號把枚舉常量列表和方法定義分開。 ### **枚舉類自定義屬性** 我們知道,**默認每一個枚舉常量就帶了一個name和ordinal的屬性**。 我們**還可以通過枚舉類自定義屬性,讓每一個枚舉常量攜帶更多的屬性。而且kotlin更為方便,直接在主構函數里面,定義你想定義的其他屬性即可**,參考代碼: ~~~ enum class Week(val what: String, val doSomething: String) { MON("周一", "上班"), TUE("周二", "上班"), WED("周三", "上班"), THU("周四", "上班"), FRI("周五", "上班"), SAT("周六", "休息"), SUN("周日", "休息") } fun main(args: Array<String>) { //周一 val mon = Week.MON //周六 val sat = Week.SAT println("-------Week.MON-------") println("mon.name:${mon.name}") println("mon.ordinal:${mon.ordinal}") println("mon.what:${mon.what}") println("mon.doSomething:${mon.doSomething}") println("-------Week.SAT-------") println("sat.name:${sat.name}") println("sat.ordinal:${sat.ordinal}") println("sat.what:${sat.what}") println("sat.doSomething:${sat.doSomething}") } ~~~ 運行結果 ``` -------Week.MON------- mon.name:MON mon.ordinal:0 mon.what:周一 mon.doSomething:上班 -------Week.SAT------- sat.name:SAT sat.ordinal:5 sat.what:周六 sat.doSomething:休息 Process finished with exit code 0 ``` 上述代碼中,每個枚舉都通過構造函數進行了初始化,計劃了一周中每天要干的事情。如果需要對枚舉進行初始化,則枚舉類后面的括號中必須傳遞每個枚舉需要初始化的參數。 ? ? ? ? ? ? ? ? ? ?
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看