kotlin常用的kotlin类②(枚举类|枚举类定义函数|密封类)(代码片段)

韩曙亮 韩曙亮     2023-01-20     727

关键词:

文章目录





一、枚举类



Kotlin 中使用 枚举类 定义常量 , 枚举类定义格式如下 : 枚举常量 都是 枚举类实例对象 ;

enum class 枚举类类型名 
	枚举常量1,
	枚举常量2,
	...


代码示例 :

enum class Gender 
    MALE,
    FEMALE


fun main() 
    println(Gender.MALE)
    println(Gender.MALE is Gender)

执行结果 : 枚举类打印的结果是 枚举的 常量名称 ;

MALE
true

枚举的常量 Gender.MALE 是 Gender 类的一个 实例对象 ;





二、枚举类定义函数



在枚举类中 , 可以 定义函数 , 包括 普通函数构造函数 ;


1、枚举类定义普通函数


通过 枚举类 的 类型常量 ( 实例对象 ) 可以 调用 枚举类中定义的方法 ;


为枚举类定义普通函数 : 在枚举类 Gender 中定义了 log 函数 , 相当于为 Gender.MALE 和 Gender.FEMALE 实例对象定义了 log 函数 ; Gender.MALE 和 Gender.FEMALE 实例对象可以直接调用该函数 ;

enum class Gender 
    MALE,
    FEMALE;

    fun log() 
        println("Gender, MALE, FEMALE")
    


fun main() 
    Gender.MALE.log()

执行结果 :

Gender, MALE, FEMALE

2、枚举类定义构造函数


为枚举类定义构造函数后 , 每个枚举常量都要传入对应的构造函数参数 ;

为枚举类定义构造函数 :

enum class Gender(var id: Int) 
    MALE(0),
    FEMALE(1);

    fun log() 
        println("Gender, MALE 0, FEMALE 1, id = $id")
    


fun main() 
    Gender.MALE.log()
    Gender.FEMALE.log()

执行结果 :

Gender, MALE 0, FEMALE 1, id = 0




三、密封类



枚举类型 是一组 子类型 闭集 ;

密封类 可以 定义 枚举类型的 子类型闭集 , 一个密封类可以有多个子类 , 继承密封类的子类 必须 与 密封类在相同的 Kotlin 代码文件中 ;

密封类适用于这种情况 , 要使用枚举的特性 , 但是需要在枚举基础上保存多个特性 ;

枚举只能实现简单的常量列举 , 如果需要更复杂的 子类型闭集 , 则需要使用密封类 ;


代码示例 :

sealed class Gender 
    // Male 和 Female 都是 密封类 Gender 的子类
    object Male: Gender()
    object Female: Gender()


class Student(var name: String, var age: Int, var gender: Gender) 
    fun log() 
        when(gender) 
            is Gender.Male -> println("name = $name, age = $age, 男性")
            is Gender.Female -> println("name = $name, age = $age, 女性")
        
    


fun main() 
    var gender = Gender.Female
    var student = Student("Tom", 18, gender)
    student.log()

执行结果 :

name = Tom, age = 18, 女性

kotlin学习之枚举类(代码片段)

Kotlin枚举类枚举类最基本的用法是实现一个类型安全的枚举。enum关键字在类头中的class关键字前面enumclassColor...枚举常量枚举常量使用逗号分隔,每个枚举常量都是一个对象。enumclassColorRED,GREEN,BLUE访问枚举常量枚举相关属性:... 查看详情

kotlin基础-枚举类

/**枚举类:有限个类型的列举*其中的每一个称为枚举常量(可带初值),每一个以逗号分隔****///扑克牌花色enumclassPoKerCard{红心,方片,梅花,黑桃}//衣服尺码:带构造器的枚举enumclassSize(valheight:Int){S(150),M(160),L(170)}funmain(args:Array<... 查看详情

kotlin枚举类(代码片段)

枚举类最基本的用法是实现一个类型安全的枚举。枚举常量用逗号分隔,每个枚举常量都是一个对象。enumclassColorRED,BLACK,BLUE,GREEN,WHITE枚举初始化每一个枚举都是枚举类的实例,它们可以被初始化:enumclassColor(valrgb:Int)   ... 查看详情

kotlin学习之枚举类(代码片段)

...举都是这个枚举类的实例而且不提供公共的构造方法。在kotlin中& 查看详情

从零开始学kotlin-枚举

从零开始学Kotlin基础篇系列文章枚举的定义一个类的对象是有限且固定的,这种实例有限且固定的类称为枚举类;枚举常量用逗号分隔,每个枚举常量都是一个对象;enumclassEnumDemo9{RED,BLUE,BLACK,WHITE}枚举初始化每一个枚举都是枚举类... 查看详情

kotlin初学者枚举类-密封类-数据类-继承(代码片段)

...介:CSDN博客专家、华为云享专家认证系列专栏:Kotlin初学者学习交流:三人行必有我师焉;择其善者而从之,其不善者而改之。目录一、枚举类1.1创建枚举类1.2获取枚举相关信息1.3枚举类添加属性1.4定义函数1... 查看详情

使用 gradle 包装器构建 Kotlin 枚举类中的无效方法声明

】使用gradle包装器构建Kotlin枚举类中的无效方法声明【英文标题】:InvalidMethodDeclarationinKotlinEnumClassbuildingwithgradlewrapper【发布时间】:2019-04-1618:34:19【问题描述】:我有以下Kotlin枚举类:enumclassDurationModifierGreaterThanoverridevaldisplay... 查看详情

kotlin基础(十四)枚举类(enum)数据类(data)和密封类(sealed)与java的写法差异

...参数列表,你可以在enum的内部去声明字段和方法。但在kotlin中,这有点不太一样:enumclassSize(valabbreviation:String)SMALL( 查看详情

Android数据绑定:如何获取kotlin枚举类的字段值?

】Android数据绑定:如何获取kotlin枚举类的字段值?【英文标题】:AndroidDatabinding:howtogetfieldvalueofkotlinenumclass?【发布时间】:2019-11-1404:49:17【问题描述】:我有一个包含两个字段的枚举类:enumclassMyEnum(valtext1:String,valtext2:String)A("a... 查看详情

kotlin学习手记——单例内部类数据类枚举类密封类内联类(代码片段)

Kotlin单例:只需要类前面添加object关键字即可,object定义类等价于java的恶汉式的单例模式objectSingletonvarx:Int=2funy()init//object不能定义构造函数,但可以定义init块object不能定义构造函数,但可以定义init块使用ÿ... 查看详情

kotlin——最详细的抽象类(abstract)内部类(嵌套类)详解

在前面几个章节中,详细的介绍了Kotlin类的类别中的数据类、密封类、接口类以及枚举类。在这个章节中会对Koltin的抽象类和内部类作出一个详细的讲解。如果对上面所提到的类的类别还不是很清晰的,请阅读我的前几篇文章。... 查看详情

kotlin中级---kotlin类之接口枚举.md

一、接口在Kotlin中,一个类只能继承一个普通类或者抽象类。通过接口我们可以进行多实现interfaceinterfaceDemo关键字:冒号(?,这一点是和Java不同的。Java中使用接口使用的是implements关键字在Kotlin中冒号(:)使用的地方很... 查看详情

kotlin中嵌套类数据类枚举类和密封类的详解(代码片段)

博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家👉点击跳转到教程一、嵌套类如果一个类只对另一个类有用,那么将其嵌入到该类中并使这两个类保持在一起... 查看详情

kotlin对象枚举委托(代码片段)

目录一、Kotlin对象1.kotlin伴生对象2.kotlin对象和单例模式二、Kotlin枚举1.kotlin定义枚举2.kotlin使用枚举三、Kotlin委托1.kotlin类委托2.kotlin属性委托3.kotlinMap委托4.kotlin延迟属性5.kotlin属性监听附Github源码一、Kotlin对象1.kotlin伴生对象clas... 查看详情

将 graphql 枚举映射到 kotlin 枚举

】将graphql枚举映射到kotlin枚举【英文标题】:mappingagraphqlenumtoakotlinenum【发布时间】:2019-08-1414:55:16【问题描述】:我对Graphql和Kotlin都很陌生,我遇到了一个问题。我有一个名为成分的对象(kotlin中的数据类,输入graphql)。成... 查看详情

kotlin实战——kotlin基础(代码片段)

文章目录1.基本要素:函数和变量1.1函数1.2变量1.3更简单的字符串格式化:字符串模板2.类和属性2.1属性2.2自定义访问器3.表示和处理选择:枚举和“when”3.1声明枚举类3.2使用“when”处理枚举类3.3在“when”结构中使用... 查看详情

kotlin基础知识汇总(知识与实践相结合)

2个月的时间总算把Kotlin的基础知识写完了,下面咱们看看具体内容:学习Kotlin的必要性【Kotlin初学者】为什么要学Kotlin 【Kotlin初学者】打牢基础的重要性运行环境【Kotlin初学者】AndroidStudio运行main函数报错解决基础知识... 查看详情

kotlin初学者类的修饰符(代码片段)

类的修饰符        Kotlin类的修饰符包括classModifier和accessModifierclassModifier        类属性修饰符,标示类本身特性abstract//抽象类final//类不可继承,默认属性enum//枚举类open//类可继承,类默认是final的annotation//... 查看详情