Kotlin枚举完全指南,从入门到精通一站式掌握

第一章:Kotlin枚举的基本概念与定义

Kotlin中的枚举类(Enum Class)是一种特殊的类,用于表示固定数量的常量。与Java类似,Kotlin通过`enum class`关键字来定义枚举类型,允许开发者将一组相关的常量组织在一个类型安全的结构中。

定义枚举类

使用`enum class`声明一个枚举类型,每个枚举常量都是该类的一个实例。例如,定义一个表示星期几的枚举:
enum class Day {
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
}
上述代码定义了`Day`枚举类,包含七个预定义的常量。每个常量在类加载时自动实例化,并在整个程序生命周期中保持唯一。

枚举的内置属性与方法

每个Kotlin枚举类都默认拥有两个属性:
  • name:返回枚举常量的名称字符串。
  • ordinal:返回枚举常量在声明顺序中的索引(从0开始)。
例如:
val day = Day.FRIDAY
println("Name: ${day.name}")      // 输出: FRIDAY
println("Ordinal: ${day.ordinal}") // 输出: 4

枚举类的表格表示

以下是`Day`枚举前三个常量的属性示例:
常量nameordinal
MONDAYMONDAY0
TUESDAYTUESDAY1
WEDNESDAYWEDNESDAY2

第二章:Kotlin枚举的高级特性详解

2.1 枚举类的属性与构造函数实践应用

在Java中,枚举类不仅可以定义常量,还能拥有属性和构造函数,从而实现更丰富的语义表达。
带参数的枚举构造函数
public enum Status {
    SUCCESS(200, "请求成功"),
    ERROR(500, "服务器错误"),
    NOT_FOUND(404, "资源未找到");

    private final int code;
    private final String message;

    Status(int code, String message) {
        this.code = code;
        this.message = message;
    }

    public int getCode() { return code; }
    public String getMessage() { return message; }
}
上述代码中,每个枚举值在初始化时传入状态码和描述信息。构造函数为私有,确保只能在枚举内部调用。
应用场景示例
  • HTTP状态码封装,便于统一管理
  • 订单状态机中携带行为描述
  • 配置类型映射,结合属性提供元数据
通过属性与构造函数结合,枚举从简单的常量集合升级为具备数据承载能力的类型,提升代码可读性与维护性。

2.2 在枚举中定义方法与行为逻辑封装

在现代编程语言中,枚举不再局限于常量集合,而是可以封装行为和方法,提升代码的可读性与可维护性。
枚举方法的定义
以 Java 为例,可以在枚举中定义抽象方法或具体方法,使每个枚举实例具备独立的行为逻辑:

public enum Operation {
    ADD {
        public double apply(double x, double y) { return x + y; }
    },
    SUBTRACT {
        public double apply(double x, double y) { return x - y; }
    };

    public abstract double apply(double x, double y);
}
上述代码中,apply 是一个抽象方法,每个枚举实例提供具体实现。调用时可通过 Operation.ADD.apply(5, 3) 得到结果 8,实现了行为的封装。
优势分析
  • 将数据与行为绑定,符合面向对象设计原则
  • 避免使用条件判断分发逻辑,提升可扩展性
  • 增强类型安全性,减少运行时错误

2.3 使用伴生对象扩展枚举功能的技巧

在 Kotlin 中,枚举类本身功能有限,但通过伴生对象可显著增强其能力。伴生对象允许在枚举中定义静态方法和属性,从而实现工厂模式、查找表等功能。
添加查找功能
通过伴生对象封装根据属性查找枚举实例的方法:
enum class Color(val hex: String) {
    RED("#FF0000"),
    GREEN("#00FF00"),
    BLUE("#0000FF");

    companion object {
        private val map = values().associateBy { it.hex }
        
        fun fromHex(hex: String): Color? = map[hex]
    }
}
上述代码构建了一个基于 hex 值的映射表,fromHex 方法可在运行时快速检索对应枚举值,提升可维护性与查询效率。
统一初始化逻辑
  • 伴生对象适用于集中管理枚举的解析逻辑
  • 支持复杂构造前的预处理操作
  • 便于单元测试和异常处理统一介入

2.4 枚举单例模式的实现原理与优势分析

枚举类实现单例的基本结构
Java 中利用枚举(enum)实现单例模式是最简洁且线程安全的方式之一。JVM 保证枚举实例的唯一性,避免了反射和序列化破坏单例的问题。

public enum Singleton {
    INSTANCE;

    public void doSomething() {
        System.out.println("执行业务逻辑");
    }
}
上述代码中,INSTANCE 是 Singleton 枚举的唯一实例。类加载机制确保其在初始化时仅被创建一次,且默认具备 private 构造函数。
相较于传统实现的优势
  • 自动防止反射攻击:枚举构造器无法通过反射调用;
  • 序列化安全:JVM 保证反序列化时仍返回同一实例;
  • 代码简洁,无需手动实现双重检查或静态内部类。
因此,枚举单例是目前推荐的最可靠的单例实现方式。

2.5 枚举序列化与反序列化的注意事项

在处理枚举类型的序列化与反序列化时,需特别注意类型安全与值的一致性。若使用字符串形式表示枚举值,应确保反序列化时能正确映射到对应枚举成员。
常见问题:未知枚举值的处理
当接收到服务端未定义的枚举值时,直接反序列化可能导致异常。建议为枚举添加默认或未知项作为兜底。

type Status int

const (
    StatusUnknown Status = iota
    StatusActive
    StatusInactive
)

func (s Status) String() string {
    switch s {
    case StatusActive:
        return "active"
    case StatusInactive:
        return "inactive"
    default:
        return "unknown"
    }
}
上述代码通过实现 String() 方法控制序列化输出,并将无效值映射为 unknown,提升系统容错能力。
推荐实践
  • 始终定义默认枚举值以应对反序列化失败
  • 在 JSON marshal/unmarshal 时实现自定义方法以精确控制行为

第三章:Kotlin枚举在实际开发中的典型场景

3.1 状态机设计中枚举的优雅实现

在状态机设计中,使用枚举类型能显著提升代码可读性和类型安全性。通过为每个状态赋予语义化名称,避免魔法值带来的维护难题。
Go 语言中的状态枚举实现
type State int

const (
    Idle State = iota
    Running
    Paused
    Stopped
)

func (s State) String() string {
    return [...]string{"Idle", "Running", "Paused", "Stopped"}[s]
}
上述代码定义了状态枚举类型 State,利用 iota 自动生成递增值,并通过 String() 方法实现状态到字符串的映射,便于日志输出和调试。
状态转换表的设计
当前状态事件下一状态
IdleStartRunning
RunningPausePaused
PausedResumeRunning
通过表格形式明确状态迁移规则,有助于团队协作与逻辑验证,降低状态跳转错误风险。

3.2 用枚举处理多分支业务逻辑替代if-else

在复杂的业务系统中,过多的 if-else 分支会导致代码可读性差、维护成本高。使用枚举结合策略模式,能有效解耦多分支逻辑。
枚举定义行为类型
public enum OrderType {
    NORMAL("normal", "普通订单") {
        @Override
        public void process() { System.out.println("处理普通订单"); }
    },
    VIP("vip", "VIP订单") {
        @Override
        public void process() { System.out.println("优先处理VIP订单"); }
    };

    private final String code;
    private final String desc;

    OrderType(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public abstract void process();

    public static OrderType fromCode(String code) {
        for (OrderType type : values()) {
            if (type.code.equals(code)) return type;
        }
        throw new IllegalArgumentException("未知订单类型");
    }
}
该枚举通过抽象方法 process() 定义处理逻辑,每个枚举实例实现具体行为,避免条件判断。
调用示例
  • 传入订单类型码(如 "vip")
  • 通过 fromCode 获取对应枚举实例
  • 直接调用 process() 执行逻辑
这种方式提升了扩展性,新增类型无需修改原有代码。

3.3 枚举结合密封类构建类型安全的状态体系

在 Kotlin 中,通过将枚举与密封类(sealed class)结合,可构建出类型安全且易于维护的状态管理体系。密封类限制了子类的继承范围,确保状态转移的穷尽性。
状态建模示例
sealed class LoadingState {
    object Idle : LoadingState()
    object Loading : LoadingState()
    data class Success(val data: String) : LoadingState()
    data class Error(val message: String) : LoadingState()
}
上述代码定义了一个封闭的状态层级:`Idle` 表示初始状态,`Loading` 为加载中,`Success` 和 `Error` 分别携带结果数据。编译器能检测 `when` 表达式的分支是否覆盖所有情况,避免遗漏处理。
优势对比
方式类型安全扩展性
纯枚举高低(无法携带数据)
密封类极高高(支持数据绑定)

第四章:Kotlin枚举与其他语言特性的协同使用

4.1 枚举与when表达式的深度整合技巧

在 Kotlin 中,枚举类与 when 表达式的结合使用能够显著提升代码的可读性与安全性。通过将枚举实例作为分支条件,when 可实现 exhaustive 检查,确保所有枚举值都被处理。
枚举与 when 的安全匹配
enum class NetworkState { IDLE, LOADING, SUCCESS, ERROR }

fun renderState(state: NetworkState) = when (state) {
    NetworkState.IDLE -> "等待操作"
    NetworkState.LOADING -> "加载中..."
    NetworkState.SUCCESS -> "请求成功"
    NetworkState.ERROR -> "发生错误"
}
上述代码中,when 将枚举每个实例作为分支,编译器会强制覆盖所有枚举值,避免遗漏情况。
增强的业务逻辑分发
  • 枚举定义状态或类型分类
  • when 作为控制流分发器
  • 结合密封类可扩展复杂场景

4.2 在数据类与接口中集成枚举类型的实践

在现代应用开发中,枚举类型常用于约束字段取值范围,提升代码可读性与类型安全性。将枚举集成到数据类和接口中,有助于统一数据契约。
数据类中的枚举使用
以 Go 语言为例,定义用户状态枚举并嵌入数据结构:
type UserStatus int

const (
    Active UserStatus = iota + 1
    Inactive
    Suspended
)

type User struct {
    ID     int        `json:"id"`
    Name   string     `json:"name"`
    Status UserStatus `json:"status"`
}
该设计通过自定义整型枚举限制状态值,序列化时自动转换为数字,便于数据库存储与 API 传输。
接口层的枚举校验
在接口处理中,应对传入的枚举值进行合法性校验,避免无效状态入库:
  • 接收 JSON 请求时,反序列化前验证 status 字段是否属于预定义范围
  • 返回响应时,确保枚举值具有明确语义映射,必要时配合字符串描述

4.3 利用扩展函数增强枚举可读性与功能性

在现代编程语言中,枚举类型常用于表示固定集合的常量值。然而,原生枚举的功能通常较为有限。通过扩展函数,可以为枚举添加行为,显著提升其可读性与实用性。
扩展函数的优势
扩展函数允许在不修改原始类型的前提下,为其添加新方法。这在处理枚举时尤为有用,例如为状态码添加描述信息或验证逻辑。
enum class OrderStatus {
    PENDING, SHIPPED, DELIVERED, CANCELLED;

    fun isFinal() = this == DELIVERED || this == CANCELLED

    fun displayText() = when (this) {
        PENDING -> "等待发货"
        SHIPPED -> "已发货"
        DELIVERED -> "已送达"
        CANCELLED -> "已取消"
    }
}
上述代码中,isFinal() 判断订单是否处于最终状态,displayText() 提供用户友好的中文说明。通过扩展语义行为,枚举不再只是标识符集合,而是具备业务含义的富类型。

4.4 Android开发中枚举资源映射的最佳方案

在Android开发中,将枚举类型与字符串资源进行映射可提升多语言支持与维护性。推荐通过接口契约统一管理枚举与资源ID的绑定。
定义资源映射接口
public interface ResourceMappedEnum {
    int getNameResId();
}
该接口强制枚举实现资源ID返回逻辑,确保类型安全。
枚举实现示例
  • Status.ACTIVE.getNameResId() 返回 R.string.status_active
  • 结合 getString() 动态获取本地化文本
优势对比
方案类型安全可维护性
字符串硬编码❌低
资源映射枚举✅高

第五章:总结与性能优化建议

合理使用连接池配置
在高并发场景下,数据库连接管理至关重要。未正确配置连接池可能导致资源耗尽或响应延迟。以下是一个基于 Go 的数据库连接池调优示例:
// 设置最大空闲连接数
db.SetMaxIdleConns(10)
// 设置最大打开连接数
db.SetMaxOpenConns(100)
// 设置连接最长存活时间
db.SetConnMaxLifetime(time.Hour)
缓存策略优化
对于频繁读取但较少变更的数据,引入多级缓存可显著降低数据库压力。推荐采用本地缓存(如 Redis)结合内存缓存(如 Go sync.Map 或第三方库 bigcache)的组合方案。
  • 热点数据优先从本地缓存加载,减少网络开销
  • 设置合理的过期策略,避免缓存雪崩
  • 使用布隆过滤器预判缓存是否存在,减少穿透查询
SQL 查询与索引优化
执行计划分析是性能调优的基础。通过 EXPLAIN 分析慢查询,并结合实际业务场景建立复合索引。
查询类型优化前耗时 (ms)优化后耗时 (ms)改进措施
订单列表查询32045添加 (user_id, created_at) 复合索引
用户登录日志51080分表 + 覆盖索引
异步处理与批量化操作
将非核心逻辑(如日志记录、通知发送)移至消息队列异步执行,可有效缩短主流程响应时间。批量插入时应控制批次大小,避免单次事务过大导致锁表或内存溢出。
FPGA以太网接口设计避坑指南:GMII与RGMII时序转换的三种实现方案对比 本文深入解析FPGA以太网接口设计中GMII与RGMII时序转换的三种实现方案,包括Xilinx官方IP核、手工原语逻辑和开源方案gmii_to_rgmii。通过对比分析各方案的优缺点和适用场景,为工程师提供技术选型指南,帮助避免常见设计陷阱,提升高速网络设备开发的效率和可靠性。 阅读详情

相关推荐

ADS学习笔记 1. 功率放大器设计

基于ADS2023 update2的学习笔记1.功率放大器设计

u014087103的博客 1万+

Kotlin零基础入门到精通(精选)

Kotlin从入门到精通一. Kotlin课程概述1.1 课程安排:1.2 什么是Kotlin?1.3 Kotlin的发展历程1.4 学习目标1.5 必备知识1.6 参考资料1.7 Hello,world二. 数据类型2.1 本章目标2.2 Boolean类型2.3 Number类型2.4 Char类型2.5 类与对象2.6 空类型和智能类型转换2.7 包2.8 区间2.9 数组三. 程序结构3.1 常量与变量3.2 函数3.3 Lambda表达式 一. Kotlin课程概述 1.1 课程安排: 课程介绍

暗余的博客 2万+

C#串口通讯实战:如何用SerialPort类搞定工业传感器数据采集(附完整代码)

本文详细介绍了如何使用C#的SerialPort类实现工业级传感器数据采集,涵盖串口通讯基础配置、数据帧处理、异常恢复机制及性能优化策略。通过实战代码示例,帮助开发者构建稳定可靠的工业数据采集系统,特别适合需要处理高频数据采集和复杂工业环境的场景。

weixin_42525551的博客 1086

Kotlin教程,从入门到精通

前言 Kotlin现在已经更新至1.3. 后续,也将以1.3版本进行讲解。 围绕 What(是什么)、How(怎么用)、Difference(与java的区别)、Intent(意图是什么)四个方面来阐述。 产物:Kotlin整理后的Xmind(更新在github上) 目录结构 [基础篇] 基本类型 ...

王学明 2101

affymatrix探针转换 | GPL5175探针对应的基因转换

一般情况下,有一些比较成熟的对应平台的注释数据集的R包。但是这个注释平台,我在Bioconductor上找了一圈都没有找到。只能通过最原始也最可靠的方法,从GEO数据集上去下载这部分的注释文件。以下展示全过程。 我要检查的数据平台是:GPL5157。 数据集的注释集链接为:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GPL5175 这个注释数据集比较难弄的地方在于,它的基因集注释的不太好。没有比较直接的可供提取的genesample的信息;在ge.

weixin_40640700的博客 7124

CH569 USBSS库函数分析

CH569 USB3.0 解析

havc_W的博客 7685

Kotlin入门到精通(实战)- 总目录

学前必读 Kotlin入门到精通(实战)- 前言 Kotlin入门到精通(实战)- 总目录 第1章 Kotlin 简单入门 在这一章,我将带大家从从最基本的 Kotlin 函数和变量开始,为我们后面的 Kotlin 内容做好铺垫。还会从最基本的表达式和语句的概念开始讲起,让大家明白 Kotlin 的语法糖为什么是这样的,而不用去死记硬背。紧接着还会介绍 Kotlin 中的枚举类,并且还是着重讲解在实际开发中如何使用枚举,让你明白什么时候用枚举什么时候使用整型常量,你会明白枚举的语法虽然很简单。但是在实际开发

Chiclaim 3900

串行通信原理及实验仿真

1. 处理器与外部设备通信的两种方式: 并行通信和串行通信 并行通信是指数据的各个位用多条数据线同时进行传输 优点:传输速度快 缺点:占用引脚资源多 串行通信是将数据分成一位一位的形式在一条传输线上逐个传输 优点:通信线路简单,占用引脚资源少 缺点:传输速度慢 2. 串行通信的通信方式: 同步通信和异步通信 同步通信:带有时钟同步信号的数据传输;发送方和接收方在同一时钟的控制下,同步传输数据。 异步通信:不同时钟同步信号的数据传输。发送方和接收方使用各自的时钟控制数据的发送和接收过程。 3. 串行通

gemengxia的博客 4322

Android开发工程师必备:《kotlin从入门到精通》

对于安卓开发者来说,掌握已经成为一项必备技能。自2017年Google I/O大会上Kotlin被宣布为Android开发的官方支持语言以来,越来越多的开发者和项目开始采用Kotlin进行Android应用开发。

m0_56144365的博客 1134

【AI智能体】Claude Code 核心记忆文件 CLAUDE.md实战操作详解

Claude Code 核心记忆文件 CLAUDE.md实战操作详解

congge 5457

3. 动手运行第一个 SAP Fiori Elements 应用(ListReport 类型)

这个代理服务器能够自动监听我们 Fiori Elements 应用里向 ES5 Demo 系统发送的 OData 请求,拦截这个请求,并通过 Node.js 代码向 ES5 服务器转发,拿到响应数据后再交还给 Fiori Elements 应用。后者对自己发出的请求被代理这件事情一无所知。本文的任务是,大家按照我的介绍,在本地成功运行笔者准备的这个 Fiori Elements 应用。的错误消息, 说明大家安装的 Node.js 版本没有达到本地运行 Fiori Elements 的最低要求。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1671

kotlin枚举_Kotlin枚举班

kotlin枚举In this tutorial, we’ll be looking into Kotlin Enum classes. What’s in store for them? How are they different from enums in Java? We’ll be discussing everything you need to know about kotlin ...

从零开始的教程世界 712

1、开启 Microsoft Power Automate 自动化之旅

本文介绍了 Microsoft Power Automate 的基本概念和其在信息时代自动化需求中的重要作用。Power Automate 是 Power Platform 的一部分,能够通过无代码/低代码的方式自动化处理重复性任务,例如邮件处理、文件复制等,从而提升工作效率。文章还详细讲解了 Power Automate 的核心术语、登录方式、创建第一个流程的操作步骤,并通过示例帮助用户快速上手。无论是终端用户还是管理员,都可以通过本文了解如何利用 Power Automate 实现业务流程自动化。

corn8的博客 169

Kotlin语言教程:从入门到精通

Kotlin 是一门功能强大且优雅的语言,它不仅简化了代码编写,还提供了更安全的编程环境。无论是 Android 开发、Web 开发还是后端服务,Kotlin 都能胜任。通过本文的介绍,希望能够帮助你掌握 Kotlin 的核心概念,开启你的 Kotlin 编程之旅。在未来的学习和实践中,你将不断发掘 Kotlin 更多的魅力和可能性。

qq_42072014的博客 2017

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

最全Android Kotlin 学习路线(Kotlin 从入门、进阶到实战)

Kotlin 是由 jetBrains 开发的一门现代多平台应用的静态编程语言,Kotlin 代码即可以编译成 Java 字节码,又可以编译成 JavaScript,Kotlin 是开源的,源码在这。Kotlin 包含了大量的语法糖,在编码的时候,会大大的简化我们的代码量及工作效率。且相比传统的 Java 语言,Kotlin 种大量的简写,可以减少很多用Java 必须要写的样板代码,减少大量的 if…else 等嵌套,减少大量接口的实现,代码结构也会更加清晰。

Eqiqi的博客 5867

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Kotlin枚举类完全指南

Kotlin枚举类是一种特殊数据类型,用于定义固定常量集合。通过enum关键字声明,支持属性、接口实现和抽象方法。枚举类提供实用方法如values()和valueOf(),与when表达式配合使用效果良好。相比密封类,枚举类更适合表示简单常量,但内存开销略大。它还支持序列化、伴生对象等高级用法,在多平台项目中行为一致。典型应用包括权限系统、状态管理等场景,具有类型安全、代码简洁等优势。

2501_93551058的博客 355

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Kotlin 枚举类

kotlin 中也如Java一样,有枚举类这个类型。 枚举类的定义:在某些情况下,一个类的是有限而且固定的,比如季节类、月份类、等等,这种实例有限而且固定的类,叫做枚举类。 作用:在早期代码中,可能会使用静态常量表示枚举,比如下面定义的常量: //申请手机状态的权限的 回执码 var REQUEST_READ_PHONE_STATE: Int = 1001 //申请手机存储权限的 回执...

GerryRun的博客 1671

Kotlin_枚举

Kotlin 文章目录Kotlin 枚举类最基本的用法是实现一个类型安全的枚举。 枚举常量用逗号分隔,每个枚举常量都是一个对象。 enum class Color{ RED,BLACK,BLUE,GREEN,WHITE } fun main(args: Array<String>) { println(Color.RED) val res = Color.va...

959 676

不知道如何入门Kotlin?《Kotlin 入门教程指南》带你从入门,带你飞

前言 如果你是一名 Android 开发者,那掌握 Kotlin 语言对你来说就非常重要了。 Google 宣布将 Kotlin 作为 Android 开发的官方编程语言后,Kotlin 开发者社区一直在快速增长。对于Android 应用开发者来说,仅仅掌握 Java 语言是不够的, 还应该学习 Kotlin 语言,才能追上技术发展趋势,在工作中更加游刃有余。 Kotlin 作为 Android 开发的新选择,具有简洁、安全、函数式编程等特点,在实际开发中使用起来非常方便。在使用 Kotlin 的专业 A.

qq_44102588的博客 3109

Kotlin之枚举类

kotlin之枚举笔记

七夜聖君的博客 1446

【深入kotlin】 - 枚举和注解

枚举 所谓枚举,就是实例个数有限的类。 定义 enum class Season { SPRING, SUMMER, AUTUMN, WINTER } 既然是class,当然也可以有主构造器,通过主构造器为所有实例的 temperature 赋予不同的初始值: enum class Season2(val temperature: Int) { SPRING(10), SUMMER(30),AUTUMN(30),WINTER(0) } 当然也可以声明方法,而且可以在实例中重写方法: enum cl

kmyhy的专栏 2794

Kotlin语法入门-数据类、伴生类、枚举类(9)

伴生类()是Kotlin中的一个特殊类,它与普通类不同,可以包含类似Java中的静态成员和方法。在Kotlin中,类不能有静态成员,但是可以使用伴生类来模拟静态成员和方法的行为。伴生类可以访问其所属类的私有成员,并且可以通过类名直接访问其伴生对象的成员。伴生类的成员可以通过类名直接访问,而不需要创建类的实例。伴生类也支持接口实现,类的继承等。定义Test.NAMENAME,AGE。

m0_63144319的博客 1609

Kotlin入门-被简化的 枚举类(与java的差异)

前言 基本上Java是一样的。下面的几个点java也都提供 它实现一个类型安全的枚举。 总体上说,Kotlin的枚举跟Java的枚举是基本相同的。差异主要在代码量上。 初始化 无参数的枚举类型 enum class Color{ RED,BLACK,BLUE,GREEN,WHITE } 我们再来看下java的实现。 public enum Color { RED,BLACK,...

王学明 886

Kotlin(九)之枚举

文章目录定义方法与属性 定义 Kotlin使用enum class定义枚举类。枚举类是一种特殊的类,可以有自己的属性、方法、可以实现一个或多个接口,也可以定义构造器 使用enum定义的枚举类默认继承kotlin.Enum类,所以枚举类不能显示继承其他父类。kotlin.Enum实现了kotlin.Comparable接口 使用enum定义的非抽象的枚举类不能使用open修饰,因此枚...

jannal专栏 761
上一篇: 3分钟理解Kotlin变量背后的编译原理(资深架构师亲授)
下一篇: Kotlin数据库开发实战(从零搭建高可靠数据层)
LiteCode
博客等级 码龄1年 146粉丝 2019原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值