kotlin中lateinit关键字的使用示例

Kotlin:关键字之lateinit 在Kotlin中定义变量或者属性都是需要初始化值的,并且其都是private的,但是有些时候对于变量或者属性只需要声明,但是不需要初始化,则kotlin提供了lateinit关键字来实现: class Student { lateinit var name: String var address :String = "北京" lateinit val sex :String lateinit var age: Int lateinit var sorce 阅读详情

kotlin中lateinit关键字的使用示例

在kotlin里面,如果需要声明一个非null变量,但是声明时又无法初始化,则可以使用lateinit修饰这个变量。让编译器知道这个非null变量会在后面初始化。

例子1

//声明延迟初始化属性viewPager,只能用于var变量
protected lateinit var viewPager: ViewPager2
private lateinit var translateCheckBox: CheckBox

//需要保证translateX,translateY在viewPager初始化后调用,否则会报错
private val translateX get() = viewPager.orientation == ORIENTATION_VERTICAL &&
            translateCheckBox.isChecked
private val translateY get() = viewPager.orientation == ORIENTATION_HORIZONTAL &&
            translateCheckBox.isChecked

//初始化属性
 public override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(layoutId)

        viewPager = findViewById(R.id.view_pager)
        translateCheckBox = findViewById(R.id.translate_checkbox)
      
    }

注意问题

1.只能用于var类型的变量
只能用于可变变量
2.只能用于对象类型,不能用于修饰原始数据类型(byte,char,short ,int,long,float,double)
不能用于修饰原始数据类型
3.判断是否初始化

        if(this::viewPager.isInitialized){
            //已经初始化
        }else{
            //还未初始化
        }
Tushare Day2——了解stock_basic数据并根据行业和地区进行统计 了解stock_basic数据 1  stock_basic基础信息2  导入包和stock_basic数据、查看基本信息3  根据行业列进行统计3.1  1.先把不同行业列举出来,看一下一共有多少种行业3.2  2.统计每个行业分别有多少家公司3.3  3.把行业从array的二维数组形式变成list形式3.4  4.把行业从list形式转换成文本形式3.5&nbsp 阅读详情

相关推荐

Excel数据清洗实战:8个必学函数搞定90%的脏数据问题(附案例)

本文通过一个完整的销售数据清洗案例,详细讲解了如何组合使用TRIM、CLEAN、SUBSTITUTE等8个核心Excel函数,构建自动化清洗流水线,高效解决日常办公中90%的脏数据问题,从而将时间留给更有价值的分析工作。

weixin_29215391的博客 583

kotlin 中关键字 lateinit

顾名思义,这是指一个延迟初始化的变量。在kotlin里面,如果在类型声明之后没有使用符号?,则表示该变量不会为null。但是这个时候会要求我们初始化一个值。有些时候,我们在声明变量的时候,并不能初始化这个变量。 一个声明成lateinit的变量,如果在整个代码里面都没有进行任何的初始化,那么能否编译通过?如果你加上了lateinit关键字,kotlin的编译器不会做这种检查。如果你将变量声明为...

lixiaolu1994的博客 1万+

数电-基于FPGA的自动售货控制系统设计

本次数电的课程设计是设计一款基于FPGA的自动售货控制系统,因为手上暂时没有FPGA的板子,所以先采用proteus仿真进行设计,观察系统效果,等之后FPGA板子下发,再移到quartus上调试和下载。同样是自己第一次自主设计电路系统,可能在功能上不完整或者逻辑上有错误,大家多多包涵,欢迎沟通交流。

gg1067的博客 2289

Kotlin 中的初始化lazy和变量lateinit

Kotlin 通常要求我们在定义属性后立即对其进行初始化。当我们不知道理想的初始值时,这样做似乎很奇怪,尤其是在生命周期驱动的 Android 属性的情况下。幸运的是,有一种方法可以解决这个问题。如果您声明一个类属性而不初始化它,IntelliJ IDEA 编辑器会警告您,并建议添加一个lateinit关键字。如果初始化的属性或对象实际上并没有在程序中使用怎么办?好吧,这些未使用的初始化将成为程序的责任,因为对象创建是一个繁重的过程。这是另一个lateinit可以帮助我们的例子。

分享身边生活经验blog 3224

别再乱删文件了!修复Print Spooler服务自动停止的3个关键检查点(附Win10/Win11实测)

本文深入解析Windows系统中Print Spooler服务自动停止的常见原因及修复方法。从第三方驱动冲突、权限与服务依赖关系到打印队列积压,提供3个关键检查点的详细排查步骤,帮助用户彻底解决打印服务异常问题,适用于Win10/Win11系统。

weixin_31569671的博客 674

FreeCAD MCP实战:用AI自然语言驱动CAD建模与自动化

在计算机辅助设计(CAD)领域,参数化建模和自动化脚本是提升设计效率的核心技术。其原理在于通过程序化指令控制三维模型的创建与修改,从而将设计意图转化为精确的几何实体。这种技术价值在于显著降低重复性操作成本,实现快速原型迭代和设计探索。在应用场景上,它尤其适用于需要频繁调整尺寸、生成系列化零件或执行规则化建模任务的工程与产品设计。本文聚焦的FreeCAD MCP项目,正是这一理念的先进实践。它通过集成Model Context Protocol(MCP),构建了一个连接Claude AI与FreeCAD的智能

weixin_26913055的博客 724

解决 kotlin关键字:lateinit 延迟初始化属性抛出异常问题

检查lateinit变量是否已经初始化,在该属性的引用上使用.isInitialized

ChinaDragon10的博客 3982

Jasper Report使用JSON数据源创建报表

最近在做一个项目小功能,表单结案要生成PDF报表。 起初,想用HTML模板(art-template模板引擎)编写,利用浏览器的打印功能保存成pdf文件下载。但是HTML编写好的模板,页码、页眉、页脚设置有坑,表单内容中的表格较多,表格不能设置跨页,导致跨页的表格内容与页眉重叠,没能解决这个问题。 于是,转战研究Jasper report生成报表,用更加专业的报表生成工具来做。刚开始,也是跌跌撞撞,遇到了很多问题,因为觉得没有退路了,必须要用这个搞出来,所以就硬着头皮去找各种资料。 主要使用的json

xiaogege2012的专栏 3319

Kotlin的lateinit关键词

有时,并不能定义一个变量或对象值为空,而也没办法在对象或变量在定义声明时就为它赋值初始化,那么这时就需要用到Kotlin提供的延迟初始化lateinit。另外,在Android中,有些写在外层的View对象,如Button,TextView虽然可以通过?.,显得代码臃肿多余,Kotlin设计出lateinit,这样开发者又可以像写Java那样,直接 button。但Kotlin语言假定开发者在使用该lateinit变量或对象时,开发者会完成初始化赋值、保证提供非空(null)值(然而,天知道呢!

Zhang Phil 1491

汽车电缆选型实战:基于ISO 19642-3~12的7类电缆电压/材料/场景对照表

本文详细解析了基于ISO 19642-3~12标准的7类汽车电缆选型实战,涵盖电压等级、导体材料和场景应用的对照表。通过全参数速查表和典型选型陷阱分析,帮助工程师快速掌握从低压信号线到高压动力电缆的选型逻辑,提升新能源汽车与智能驾驶技术的安全性和可靠性。

weixin_29043895的博客 366

【补充篇】三万字了解AUTOSAR软件架构(一)

主要讲解了AUTOSAR软件架构的分层及各个栈的作用

weixin_47571898的博客 1119

Kotlin入门(四):关键字之lateinit(笔记)

在Kotlin中定义变量或者属性都是需要初始化值的,并且其都是private的,但是有些时候对于变量或者属性只需要声明,但是不需要初始化,则kotlin提供了lateinit关键字来实现: class Student { lateinit var name: String var address :String = "北京" lateinit val sex :String lateinit var age: Int lateinit var .

Android格调小窝 1835

AgentScope 2.0 扩展开发完全指南:从中间件到模型适配器的深度实践

本文系统讲解 AgentScope 2.0 框架的五大扩展机制,涵盖中间件系统的洋葱模型与钩子设计、ChatModelBase 基类与多供应商适配器开发、工作空间(本地/Docker/E2B)的抽象接口与生命周期管理、凭据工厂与 MCP 协议集成、以及工具协议与存储后端扩展。文中提供完整的架构图、代码示例与故障排查指南,帮助开发者快速掌握 AgentScope 的插件化扩展体系。

program哲学 295

Kotlin 关键字lateinit 变量延迟初始化

kotlin lateinit 延迟初始化 先看一段简单代码: class Test : AppCompatActivity(), View.OnClickListener { private var list: ArrayList<String>? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) set

weixin_44902943的博客 582

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Kotlin for android 学习笔记 1:关键字lateinit 延迟初始化

文章转自:https://blog.youkuaiyun.com/qq_25749749/article/details/109001465。3.lateinit可以在任何位置初始化并且可以初始化多次。而lazy在第一次被调用时就被初始化,想要被改变只能重新定义。lateinit 是一个坑,对于新手来说还是一个不小的坑。lateinit var age: Int //会报错1。在 Kotlin 代码中慎用 lateinit 属性。因此,仅对象类型的属性支持 lateinit。

m0_38125535的博客 472

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Kotlin 声明变量是去掉问号(?)使用关键字lateinit

一,一般声明变量是会这样写 private var endLocationId: String? = ""二,通过声明关键字lateinit可以这样写,但要确保使用前初始化 lateinit var endLocation5: String

Jason101123的博客 1958

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【8】Kotlin 之 lateinit关键字 与lazy

lateinit是许多刚进入学习kotlin常常会掉入的坑之一。很多人为了保证java原有的语法,在定义变量和对象的过程中,会使用如下的定义方式。 class Demo{ private var value: String fun printValue(){ println(value) } } 这个时候,编译器就会提示错误 Error:(2, 5) Kotlin: Property must be initialized or be abstract 然后有很多小伙伴解决问题,会使用提示

mr_zengkun的博客 1734

Kotlin系列之as、is、by、in、out、lateinit、companion、vararg、infix等关键字

Kotlin系列之as、is、by、in、out、lateinit、companion、vararg、infix等关键字

小孟来码的博客 1万+

Kotlin的关键字 lateinit 和 lazy

lateinit,Kotlin提供的一个可以延迟初始化的方案。和类属性一起使用的时候,lateinit修饰符会阻止该属性在其类的对象构造时被初始化。lateinit修饰的变量只有在初始化时才会分配内存,而不是在声明对象时。在Kotlin中,所有变量都要有非空限制(Kotlin中是默认是空安全的,任何属性的声明都必须有初始化值)。所以在声明变量的时候有以下两种变量支持可空“?”,才能设置为null= null如果我们不做非空操作,则需要给变量初始化赋值(非空属性必须在定义的时候初始化)。

Super 含 的博客 1138

安卓 Android kotlin lateinit关键字的应用与含义

private lateinit var trueButton: Button lateinit,就是之后再初始化的意思 在安卓中,必须使用lateinit关键字声明视图对象。 这实际是告诉编译器,在使用属性内容时,我们会保障提供非空的View值。 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.ac

weixin_44727250的博客 1229

kotlin的 by lazy 和 lateinit 关键字的应用

前言在kotlin中,一般来说声明属性为非空类型必须在构造函数中初始化( 我们知道,kotlin是默认空安全的,任何属性的声明都必须初始化,只有声明支持可空“?”才能把属性声明为null)。但是这样很不方便(例如:属性可以通过依赖注入来初始化,或者在单元测试的setup方法中初始化)在这种情况下,你不能再构造函数内提供一个非空初始化器。但你仍然想在类体中引用该属性时避免空检查。为了处理这种情况 在...

weixin_34258838的博客 1303

Kotlin中的lateinit和lazy关键字如何理解

详细讲解了kotlin中的lateinit和lazy关键字

cz20010101的博客 1909

Kotlin 开发 - lateinit 关键字

Kotlin 开发 - lateinit 关键字

weixin_52173250的博客 159

kotlin关键字:lateinit、by lazy、enum、inner、sealed

lateinit:kotlin语言延迟初始化lateinit(手动加载) class Kt14 { lateinit var name: String fun request() { name = "张三" } fun response() { //是否初始化 if (::name.isInitialized) println("姓名:${name}") } } fun main() {

qq_42588016的博客 754

Kotlin使用技巧之lateinit修饰符

lateinit延迟初始化属性 在Kotlin中定义变量或者属性都是需要初始化值的,并且其都是private的,但是有些时候对于变量或者属性只需要声明,但是不需要初始化,则kotlin提供了lateinit关键字来实现: private lateinit var name : String //声明时不需要初始化 private var name2 = "小明" /...

hanxiongwei的博客 1913

lateinit 的使用限制

呢?使用lateinit关键字 lateinit var test:String //正确lateinit val test:String //错误lateinit var test:Float //错误123关于lateinit关键字的使用限制: lateinit modifier is allowed only on mutable properties lateinit modifier...

weixin_30952535的博客 678
上一篇: java正则表达式
下一篇: kotlin标准库中的Scope functions(作用域函数的使用)
cdcdec
博客等级 码龄9年 8粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值