对象声明的作用
在Java中经常会使用到单例模式,定义一个使用private构造方法并且使用静态字段来持有这个类仅有的实例。例如:
public class Singleton {
public static Singleton instance = new Singleton();
private Singleton() {
}
}
在Kotlin中,可以使用对象声明来实现单例模式。
对象声明的使用方法
对象声明通过object关键字引入。一个对象声明可以高效地以一句话来定义一个类和一个该类的变量。举个例子:
object Payroll {
val allEmployees = arrayListOf<String>()
fun calculateSalary() {
allEmployees.add("100")
}
}
fun main(args: Array<String>) {
Payroll.calculateSalary()
println(Payroll)
println(Payroll)
// 直接使用类名便可打印出单例对象的hash值
}
在对象声明中不能添加任何任何构造函数,可以添加属性、方法、初始化语句快。
使用场景
可以使用声明对象来实现一个java中的Comparator,比较器通常都不存储任何数据,所以只需要一个单独的Comparator实例来以特定的方式比较对象。
object CaseInsensitiveFileComparator: Comparator<File> {