亲宝软件园·资讯

展开

Kotlin修饰符lateinit(延迟初始化) Kotlin修饰符lateinit(延迟初始化)案例详解

ldxlz224 人气:0
想了解Kotlin修饰符lateinit(延迟初始化)案例详解的相关内容吗,ldxlz224在本文为您仔细讲解Kotlin修饰符lateinit(延迟初始化)的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Kotlin,lateinit,Kotlin,lateinit延迟初始化,下面大家一起来学习吧。
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.throwUninitializedPropertyAccessException("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属性的时候则输出 null

在这里插入图片描述

在这里插入图片描述

加载全部内容

相关教程
猜你喜欢
用户评论