Kotlin筆記 八 八 列舉類

2021-08-28 20:51:35 字數 1616 閱讀 4610

kotlin使用enum class關鍵字定義列舉類,可以實現乙個或多個介面;

列舉類的所有例項必須在***第一行顯式列出***,例項間用「,」隔開,以「;」結束

列舉類可以有自己的

屬性、方法、

構造器(構造器只能使用private修飾符,省略則預設使用private);

列舉類應該被設為不可變類,屬性不應該允許改變,推薦屬性***為唯讀屬性***,因此該屬性必須在構造器或者初始化塊中指定(一般不會在定義時指定初始值,這樣每個例項屬性就一樣的,也就失去意義),因此,一般需要顯式定義帶引數的構造器;

enum class human(val name:string)
如果列舉類沒有顯示定義構造器,可以直接列出列舉值,無須括號,如:

enum class human列舉類預設繼承kotlin.enum類而不是any類,因此,列舉類不能顯示在繼承其他類;而enuml類實現了kotlin.comparable介面

***非抽象列舉類不能使用open修飾符,因此非抽象列舉類不能派生子類,但可以實現0~n個介面;***當然同樣需要實現介面中的抽象方法

列舉類預設提供的兩個方法:

enumclass.valuesof(value:string):enumclass :根據列舉字串名獲取物件

enumclass.values():array:獲取該列舉所有列舉值組成陣列

使用列舉類例項:

enumclass.列舉值
前面小結說了,列舉類預設繼承kotlin.enum類,列舉類自然就可以使用繼承的屬性、方法

屬性:

name:返回此列舉例項名稱

ordinal:返回列舉值在列舉類中的索引值(第乙個列舉值是0…以此類推)

方法:

int compareto(e o):和同型別的列舉例項比較,比較的是列舉值索引,如果該列舉值位於指定列舉物件之前,返回整數,否則返回0

string tostring():返回列舉常量名稱

kotlin1.1開始,提供了兩個泛型方法:

enumvalues():獲取所有列舉值陣列

enumvalueof(value:string):獲取列舉例項

抽象列舉類不能使用"abstract"修飾,系統會自動為它新增abstract關鍵字;

我們說過列舉類需要顯示建立列舉值,說以在定義列舉值是需要顯示為抽象成員提供實現;

比如:

inte***ce output

enum class operator:output

override fun ouput()

},div

override fun ouput()

},times

override fun ouput()

},minus

override fun ouput()

};abstract fun evl(a:int,b:int): int

}

這裡建立plus、minus列舉值,並不是直接建立operator列舉類的例項,而是建立其子類的operator的匿名子類的例項;

python學習筆記 30 列舉類

當我們需要定義常量時,乙個辦法是用大寫變數通過整數來定義,例如月份 jan 1 feb 2 mar 3 nov 11 dec 12好處是簡單,缺點是型別是int,並且仍然是變數。更好的方法是為這樣的列舉型別定義乙個class型別,然後,每個常量都是class的乙個唯一例項。python提供了enum...

23 列舉類和元類

列舉類from enum import enum month enum month jan feb mar apr may jun jul aug sep oct nov dec 可以直接使用month.jan來引用乙個常量,或者列舉它的所有成員 for name,member in month.m...

c 基礎筆記 1 列舉

定義列舉一般不用中文,就像sql的欄位名一樣,效率會有影響,下面就實現為列舉值添自定義中文說明,然後獲取。1.建立乙個類,既然要新增自定義屬性,就必須繼承attribute public class enumhelper attribute public string description 2.建...