在一个体重秤项目里面使用Kotlin开发,考虑到项目比较小型轻量,所以和团队申请决定使用Kotlin开发,以此熟悉和尝试一下Kotlin。

首先使用Kotlin之后,发现能和Java很好的兼容一起,开发体验很不错。在开发过程中,遇到了需要使用匿名内部类的场景,然后就了解到Kotlin的object关键字。

object关键字:

在Kotlin中,object通常有三个用途:

  1. 对象表达式
  2. 对象声明
  3. 伴生对象

对象表达式

对象表达式可以实现Java中匿名内部类的效果,但比Java更加友好。

(1)Kotlin的匿名内部类(对象表达式)能被调用添加的方法。(匿名对象只有定义成局部变量和private成员变量时,才能被调用添加的方法。)

(2)Kotlin的匿名内部类能继承一个类和实现多个接口。

// 定义
open class A{}
interface B{}
interface C{}// 使用object关键字创建匿名对象
var obj = object:A(),B,C{fun say(){println("Hello World!")       }
}
// 可以调用匿名对象添加的方法
obj.say()

对象声明

object关键字作用等同于class,同时还会生成该类的单例对象(注意该类的构造器已经私有,不能被继承)。

object Person {var name = "name"
}

// 调用println(Person.name)

伴生对象

在Kotlin中是没有static关键字的,所以通常使用伴生对象来达成一样的作用。

class A{companion object 伴生对象名{// 伴生对象名是可以省略
    }
}

如果伴生对象名省略,则默认是Companion,在Kotlin代码中调用通过:

(1)类名.Companion.方法名称或变量

(2)类名.方法名称或变量

Companion其实是一个生成的静态内部类,外部类持有Companion实例对象。

转载于:https://www.cnblogs.com/nicojerry/p/10528921.html

【编程语言】Kotlin之object关键字相关推荐

  1. 【对比Java学Kotlin】object 关键字

    两种用法 Kotlin 的 object 关键字有两种用法,一个是作为右值表达式的前缀,一个是作为类的前缀修饰符. object 表达式 object 表达式一般用于对现有类进行稍微修改.因为是临时使 ...

  2. 一文就懂Kotlin作用域函数以及object关键字

    作用域函数 Kotlin 标准库包含几个函数,它们的唯一目的是在对象的上下文中执行代码块.当对一个对象调用这样的函数并提供一个 lambda 表达式时,它会形成一个临时作用域.在此作用域中,可以访问该 ...

  3. 在kotlin companion object中读取Bean,注入Bean对象

    在kotlin companion object中读取Bean,注入Bean对象 在使用kotlin时,或多或少地会使用到一些公共组件,如 http. mongo. redis相关的组件.   使用组 ...

  4. 在kotlin companion object中读取spring boot配置文件,静态类使用@Value注解配置

    在kotlin companion object中读取配置文件 静态类使用@Value注解配置 class Config {@Value("\${name}")fun setNam ...

  5. Kotlin 之 lateinit关键字 与lazy

    前言 lateinit是许多刚进入学习kotlin常常会掉入的坑之一.很多人为了保证java原有的语法,在定义变量和对象的过程中,会使用如下的定义方式. class Demo{private var ...

  6. 谷歌钦定的编程语言Kotlin大揭秘

    第一时间关注程序猿(媛)身边的故事 谷歌钦定的编程语言Kotlin大揭秘 语法+高级特性+实现原理:移动开发者升职加薪宝典! 谷歌作为世界级的科技公司巨头,强悍的技术研发与创新能力使其一直是业界的楷模 ...

  7. scala Object关键字声明的类直接调用方法、伴生对象

    object Student {def test(): Unit = {println("test")} } object T5 {def main(args: Array[Str ...

  8. Dart语言var、dynamic、Object关键字的区别

    1.var关键字 Dart语言中var关键字可以接受任何类型的变量,但是一旦赋值,类型推断就会确定这个变量的类型 ,由于Dart是个强类型语言,不能在以后的赋值中变更其类型. var age = 10 ...

  9. 新手入坑编程语言kotlin开局介绍篇

    Kotlin语言简单概述 前言 Kotlin概述 抓住今天,尽可能少的信赖明天. 喝汤能补 (* ^ ▽ ^ *) 前言 自身技能 (1)已具备计算机的基本知识,如:计算机,程序,编程语言等 Kotl ...

  10. 一天一个小知识-- kt中的object关键字

最新文章

  1. 4 行 Python 代码获取所在城市天气预报
  2. wowpve服务器优势,PVE服务器法师对本职业的一点看法
  3. 【深入浅出-JVM】(序)
  4. Hadoop HA 双namenode搭建
  5. 利用Python把四张图片按照顺序拼接起来
  6. Android Bundle类别
  7. 下载文件byte[]
  8. java单例模式 三种_三种java单例模式概述
  9. 路长全讲座免费在线学习 免费下载
  10. 基于Spring Boot,使用JPA操作Sql Server数据库完成CRUD
  11. Oracle 9.2.0.4的一个简单安装脚本(含安装前补丁p3006854)
  12. Mac上mysql默认端口那件事
  13. 数据结构C++ 复旦大学
  14. java阳历转阴历_java,阳历转阴历(农历)
  15. 全球定位实景导航 iOS实用应用周排行
  16. IE浏览器设置UserAgent
  17. 八皇后——(第一场 递归与回溯)
  18. 10.24程序员日,开源社给大家送上大礼!【抢票贴】#疯狂倒计时24小时,10月24-25日I WANT YOU!#...
  19. #467 – 使用UniformGrid 均分行和列(Use a UniformGrid for Evenly Spaced Rows and Columns)
  20. H5页面在iOS11系统上白屏了,bug修复过程

热门文章

  1. HttpClient发送get,post接口请求
  2. How to scale the BERT Training with Nvidia GPUs?
  3. 自然语言处理在金融实时事件监测和财务快讯中的应用
  4. 【智能司法】可解释的Rationale增强罪名预测系统
  5. 重磅!李航《统计学习方法》最新资源,笔记、Python 代码一应俱全!
  6. 深度学习2.0-43.AE实战与VAE实战
  7. 深度学习5-模型的保存与加载
  8. 西瓜书读书笔记5-决策树的分裂原则
  9. 从 Netflix 到 Alibaba,Spring Cloud 更好了吗?
  10. 漏洞战争: 软件漏洞发展趋势