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

 更新时间:2021年09月02日 14:43:28   作者:ldxlz224  
这篇文章主要介绍了Kotlin修饰符lateinit(延迟初始化)案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
  • 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.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

  • lateinit 不能用来修饰基本数据类型,因为基本类型的属性在类加载后的准备阶段都会被初始化为默认值

在这里插入图片描述

  • lateinit不能修饰val变量,只能修饰可变的属性

在这里插入图片描述

到此这篇关于Kotlin修饰符lateinit(延迟初始化)案例详解的文章就介绍到这了,更多相关Kotlin修饰符lateinit(延迟初始化)内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JetCache 缓存框架的使用及源码解析(推荐)

    JetCache 缓存框架的使用及源码解析(推荐)

    JetCache是一个基于Java的缓存系统封装,提供统一的API和注解来简化缓存的使用。本文重点给大家介绍JetCache 缓存框架的使用及源码分析,感兴趣的朋友一起看看吧
    2022-01-01
  • CountDownLatch源码解析之await()

    CountDownLatch源码解析之await()

    这篇文章主要为大家详细解析了CountDownLatch源码之await方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • java如何通过FileOutputStream字节流向文件中写数据

    java如何通过FileOutputStream字节流向文件中写数据

    这篇文章主要介绍了java如何通过FileOutputStream字节流向文件中写数据问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • @scope("prototype") @loadbalanced注解负载均衡失效问题

    @scope("prototype") @loadbalanced注解负载均衡失效问题

    这篇文章主要为大家介绍了@scope("prototype") @loadbalanced注解负载均衡失效问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Java中的单例模式详解(完整篇)

    Java中的单例模式详解(完整篇)

    Java单例模式应该是看起来以及用起来简单的一种设计模式,但是就实现方式以及原理来说,也并不浅显,下面这篇文章主要给大家介绍了关于Java中单例模式的相关资料,需要的朋友可以参考下
    2021-11-11
  • 200行java代码实现2048小游戏

    200行java代码实现2048小游戏

    这篇文章主要为大家详细介绍了200行java代码实现2048小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • SpringBoot项目从18.18M瘦身到0.18M的实现

    SpringBoot项目从18.18M瘦身到0.18M的实现

    本文主要介绍了SpringBoot项目从18.18M瘦身到0.18M的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Java中基于注解的代码生成工具MapStruct映射使用详解

    Java中基于注解的代码生成工具MapStruct映射使用详解

    MapStruct 作为一个基于注解的代码生成工具,为我们提供了一种更加优雅、高效的解决方案,本文主要为大家介绍了它的具体使用,感兴趣的可以了解下
    2025-02-02
  • 全面解析Hibernate关联操作、查询操作、高级特性、并发处理机制

    全面解析Hibernate关联操作、查询操作、高级特性、并发处理机制

    这篇文章主要介绍了全面解析Hibernate关联操作、查询操作、高级特性、并发处理机制的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • Java中怎样使用JSON进行文件解析

    Java中怎样使用JSON进行文件解析

    这篇文章主要介绍了Java中怎样使用JSON进行文件解析问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05

最新评论