Kotlin基础教程之伴生对象,getter,setter,内部,局部,匿名类,可变参数

 更新时间:2017年05月27日 10:18:46   作者:天命剑主  
这篇文章主要介绍了Kotlin基础教程之伴生对象,getter,setter,内部,局部,匿名类,可变参数的相关资料,需要的朋友可以参考下

先来看一个名为Message的类

在这个类中有一段包含在companion object中的代码,需要说一下的是,Kotlin的class并不支持static变量,所以需要使用companion object来声明static变量,其实这个platformStatic变量也不是真正的static变量,而是一个伴生对象,

这个伴生对象位于Message类中定义的一个叫做Companion的内部类中,如图:


可以看到在Kotlin中编译器自动生成类是很常见的事情,那么这个伴生对象作何理解呢?

我的理解是,伴生对象与单例模式相关,这个对象是Companion类的对象,伴随着Message类而生.

Companion这个内部类是编译器自动生成的,我们也可以自己定义内部类,如:


回到Message类中,我们可以看到在info和what域下还存在get和set,不错,这就是getter和setter函数,一般getter函数使用默认的就好,setter函数其实就是在赋值的时候进行一些处理,为了防止setter函数无限递归调用,在类中可以使用$符号访问成员变量,可以绕过getter和setter函数直接访问成员变量.

当然,在Kotlin中除了内部类,还有匿名类和局部类,如图:

匿名类:

可以看到r这个变量所属类型是匿名的(no name provided)

局部类:


局部类,就是在函数内部定义的类,只在函数内部可以访问.

在Kotlin中还提供了一些额外的特性,比如可变参数

这段代码运行结果如下:

让我们测试一下Message类:

可见Kotlin的getter和setter所起的作用

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Spring Cloud调用Ribbon的步骤

    Spring Cloud调用Ribbon的步骤

    Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。本文将讲述Spring Cloud调用Ribbon的方法
    2021-05-05
  • 关于LocalDateTime使用详解

    关于LocalDateTime使用详解

    这篇文章主要介绍了关于LocalDateTime使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • java 中基本算法之希尔排序的实例详解

    java 中基本算法之希尔排序的实例详解

    这篇文章主要介绍了java 中基本算法之希尔排序的实例详解的相关资料,这里提供简单实现的实例,帮助大家学习理解此部分知识,需要的朋友可以参考下
    2017-07-07
  • Java WebService开源框架CXF详解

    Java WebService开源框架CXF详解

    本文详细讲解了Java WebService开源框架CXF,文中通过示例代码介绍的非常详细。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • 4种java复制文件的方式

    4种java复制文件的方式

    本篇文章列举了4种最受欢迎的java复制文件的方式,复制文件是一个重要的操作,需要的朋友可以参考下
    2015-07-07
  • 解决SpringAop内部调用时不经过代理类的问题

    解决SpringAop内部调用时不经过代理类的问题

    这篇文章主要介绍了解决SpringAop内部调用时不经过代理类的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Spring IOC推导与DI构造器注入超详细讲解

    Spring IOC推导与DI构造器注入超详细讲解

    这篇文章主要介绍了Spring IOC推导与DI构造器注入,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-02-02
  • Java Servlet中Response对象的使用方法

    Java Servlet中Response对象的使用方法

    本文介绍了Java Servlet中Response对象的使用方法,包括设置响应头、设置响应编码、向客户端发送数据、重定向等操作,同时介绍了常用的响应状态码和响应类型,帮助读者更好地理解和掌握Servlet中Response对象的用法
    2023-05-05
  • SpringBoot整合mybatis的方法详解

    SpringBoot整合mybatis的方法详解

    这篇文章主要为大家详细介绍了SpringBoot整合mybatis的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • 详解SpringBoot如何实现缓存预热

    详解SpringBoot如何实现缓存预热

    缓存预热是指在 Spring Boot 项目启动时,预先将数据加载到缓存系统(如 Redis)中的一种机制,下面我们就来看看SpringBoot是如何实现缓存预热的吧
    2024-01-01

最新评论