Kotlin系列之对象声明

隔了比较久的一段时间了,继续来学习一点Kotlin,今天说说Kotlin中的对象声明。

我们都知道在Java中,必须先有类,然后才能new出对象,也就是声明类和创建对象是两个分开的步骤,并有先后次序。在Kotlin中,我们可以使用object关键字在声明定义一个类的同时创建出一个对象,也就是我们标题所说的对象声明,下面就来一起看看对象声明的相关知识点。

基本用法

对象声明的基本格式如下:

对象声明的使用格式如下:

这里我们创建一个年级类的对象声明,代码如下所示:

我们使用上面的对象声明

看到这里大家可能觉得这个也没什么嘛,感觉跟Java中一个类中声明了static方法和static属性,然后通过类名直接调用一样嘛,当然这里可以这么类比Java进行理解,但是要记住在Kotlin中没有static这个关键字。

使用场景

看了上面的小例子,感觉还是很简单的,那这种对象声明用在什么地方呢?学了这个知识点终归是要用的啊。

用于创建单例对象

作为23种设计模式之一的单例模式,相信很多学习Java的小伙伴都是知道的,在Kotlin中,直接利用对象声明这个高级特性将类的声明和实例的创建结合在一起,就完美达到了单例模式的要求,如下代码所示:

由于我们不能以其他方式创建Singleton的对象,所以它是满足单例模式的。

实现接口但是不包含状态

对象声明也可以像普通类那样实现接口,但是由于对象声明创建的实例只有一个,但可能被多次使用,所以一般不包含数据和状态,在这样的情况下,也可以使用对象声明,下面通过一个比较器的例子来说明,我们实现一个忽略大小写进行文件路径比较的例子,代码如下:

上面的路径比较是没有状态的,同时将我们自定义的声明对象传递给比较函数进行比较。

与Java互操作

一直在说Java和Kotlin有良好的互操作性,那么Kotlin中的对象声明在Java中该如何使用呢?

Kotlin中的对象声明被编译为Java中通过静态字段来持有的单一实例,这个实例的名字固定为INSTANCE,就好像我们在Java中调用Java定义的单例模式的实例一样。代码示例如下:

注意事项

接着,我们说一下对象声明的使用注意事项:

对象声明可以包含属性、方法、初始化语句块

对象声明不可以使用构造方法(包括主构造方法和从构造方法)

对象声明可以被声明在一个类的内部

写在最后

此处只是介绍了object关键字在对象声明中的用途,后续还会介绍更多object关键字的用处,敬请期待。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180702G07JO400?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券