本文主要介绍Kotlin修饰符lateinit(延迟初始化)案例的详细说明。本文通过一个简单的案例来说明对这项技术的理解和使用。以下是详细内容,有需要的朋友可以参考一下。
科特林将变量定义如下
lateinit变量名称:字符串
var年龄:字符串?=空
那么用lateinit装修和下面这个有什么区别呢?让我们看看这两行代码反编译成java代码时是什么样子。
@NotNull
公共字符串名称;
@Nullable
私弦年龄;
@NotNull
公共最终字符串getName() {
String var10000=this.name
if (this.name==null) {
intrinsics . throwuniinitializedpropertyaccessexception(' name ');
}
返回var10000
}
public final void set name(@ not null String var 1){
intrinsic s . checkparametersinotnull(var 1,' set-?');
this.name=var1
}
@Nullable
公共最终字符串getAge() {
返回this.age
}
public final void setAge(@ Nullable String var 1){
this.age=var1
}
可以看到@NotNull注释被添加到name属性中,非空判断是在getName和setName方法中做出的。
年龄属性增加了@Nullable。
当我们调用name时,我们抛出一个异常。
println(AddStr()。姓名)
线程“main”kot Lin中出现异常。uniinitializedpropertyaccessexception:late init属性名尚未初始化
输出年龄属性时输出null。
Lateinit不能用于修饰基本数据类型,因为基本类型的属性是在类加载后的准备阶段初始化为默认值的。
Lateinit不能修改val变量,只能修改变量属性。
本文对Kotlin修饰语lateinit的详细解释到此为止。有关Kotlin修改器lateinit的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。