Kotlin 中的延迟初始化详解

发布时间:2026/11/3 8:20:49

Kotlin 中的延迟初始化详解 Kotlin修饰符lateinit(延迟初始化)案例详解1.概述在本文中我们将研究Kotlin语法最有趣的特性之一——延迟初始化。我们还将研究lateinit关键字它允许我们欺骗编译器在类的主体中而不是在构造函数中初始化非空字段——。2.Java中的延迟初始化模式有时候我们需要用繁琐的初始化过程来构造对象。此外我们通常不能确定我们在程序开始时为其支付初始化成本的对象是否会在我们的程序中使用。Kotlin定义变量一般有如下写法lateinit var name: String var age: String? null那么用lateinit 修饰和下面那种有什么区别呢我们来看一下这两行代码反编译成java代码是什么样子的。NotNull public String name; Nullable private String age; NotNull public final String getName() { String var10000 this.name; if (this.name null) { Intrinsics.throwUninitializedPropertyAccessExcept[**io**](https://www.lsjlt.com/tag/io/)n(name); } return var10000; } public final void setName(NotNull String var1) { Intrinsics.checkParameterIsNotNull(var1, set-?); this.name var1; } Nullable public final String getAge() { return this.age; } public final void setAge(Nullable String var1) { this.age var1; }可以看到在 name 属性添加了 NotNull注解并且在getName和setName方法中进行了非空判断而 age 属性添加了 Nullable当我们调用name的时候会抛出异常println(AddStr().name)Exception in thread “main” kotlin.UninitializedPropertyAccessException: lateinit property name has not been initialized当输出age属性的时候则输出 nulllateinit 不能用来修饰基本数据类型因为基本类型的属性在类加载后的准备阶段都会被初始化为默认值lateinit不能修饰val变量只能修饰可变的属性到此这篇关于Kotlin修饰符lateinit(延迟初始化)案例详解的文章就介绍到这了,更多相关Kotlin修饰符lateinit(延迟初始化)可以扫描下方二维码免费领取《Kotlin入门教程指南》第一章 Kotlin 入门教程指南​ ● 前言第二章 概述​ ● 使用 Kotlin 进行服务器端开发​ ● 使用 Kotlin 进行 Android 开发​ ● Kotlin JavaScript 概述​ ● Kotlin/Native 用于原生开发​ ● 用于异步编程等场景的协程​ ● Kotlin 1.1 的新特性​ ● Kotlin 1.2 的新特性​ ● Kotlin 1.3 的新特性
延伸阅读

更多相关文章

2026/11/3 8:19:12

[间章] 关于重写platform判断平台的一些尝试

在开发shine_image思考的时候,我在空闲时间写下这两段代码。主要是借用rust来对宿主平台进行判断。 由于flutter本身的platform判断不了鸿蒙与各家厂商的系统ui,而我是能不写双端代码就不写的原则,所以简单的尝试了下,倒是没想到成…

2026/11/1 6:30:44

Android:解决 MVI 架构实战痛点

说在前头: 纪晓岚问和珅,为何他们往灾民粥里掺沙子,和珅道:“你是有所不知啊,如不掺沙子,灾民怕是一口粥也喝不上啊”。 同理,架构的存在是为 “在实际开发过程中消除不可预期问题”&#xff0c…

2026/11/3 0:18:46

Jetpack Compose : 一学就会的自定义下拉刷新加载更多

前言 一个成熟Androider的标志是自定义下拉刷新&加载更多😁 自定义下拉刷新你会怎么做? 因为我这个人比较懒(其实就是菜),所以直接拿Compose自带的下拉刷新来修改。 这里先上效果图,第一张是Compose…

2026/11/3 8:20:20

基于ROS与YOLO Pose的智能水果采摘系统设计与优化

## 1. 项目背景与核心需求在农业自动化领域,水果采摘一直是劳动密集型作业的典型代表。传统人工采摘存在效率低、成本高、工作强度大等问题。我们团队开发的这套基于ROS和YOLO Pose的视觉识别系统,核心解决的是采摘机器人在复杂自然环境下的三个关键问题…

2026/11/3 8:20:20

数据资产梳理实施:数据库自动嗅探与敏感数据分类分级

简介:面向企业数据安全负责人、合规与IT运维人员的数据资产梳理实施文档,围绕数据资产盘点、敏感数据识别、分类分级与合规管控等核心问题,给出从分析到落地的完整思路。文档依次展开背景概述、系统及安全分析、梳理解决方案、资产梳理技术与…

2026/11/3 8:20:20

从数据库自动嗅探到分类分级:数据资产梳理工程实践

简介:《数据资产梳理方案(实施版)》是一份面向企业数据安全管理、合规与治理岗位的实施方案文档,围绕数据资产盘点、敏感数据识别、分类分级及持续管控展开,适合安全负责人、数据治理人员和合规团队参考。包内仅含1个d…

2026/11/3 8:20:20

Whisper语音转写实践指南:从环境搭建到批量出稿

1. Whisper 到底是什么:先搞清楚你在用什么语音转写这件事,在 Whisper 出现之前其实挺闹心。传统的语音识别方案要么收费贵,要么识别率拉胯,尤其对中文口音、中英混说、专业术语这些场景,基本属于"听了个寂寞&quo…

2026/11/3 8:15:20

Redis 8 内置 AI:向量检索、语义缓存与 Agent 记忆实践

1. Redis 到底接了个什么样的 AI先给结论:这里说的"Redis 已正式接入 AI",不是哪个第三方中间件套了个壳,而是 Redis 官方在 2024 年底把 AI 能力直接做进了主版本。Redis 8 开始内置向量检索、语义缓存、自然语言查询这些能力&…

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

STM32实战:基于MAX14431数字隔离器的SPI隔离通信方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

工业SPI隔离通信设计:MAX14431BAEE+与STM32L4A6RG实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

STM32+NRF24L01无线抢答器:硬件设计、通信协议与低功耗实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑