kotlin - 在kotlin中创建一个没有object关键字的单例
问题描述
我想知道在下面的代码中,是否在不使用 object 关键字的情况下创建了一个单例:
val a = Comparator<Int>{o1, o2 -> o1.compareTo(o2)}
我读过文档。比较器是一个接口。
解决方案
val a = Comparator<String>{o1, o2 -> o1.compareTo(o2)}
和
val a = object: Comparator<String>{
override fun compare(o1: String, o2: String): Int {
return o1.compareTo(o2)
}
}
两者都创建匿名内部类的实例,您不能在给定的执行中创建另一个实例。您可以将后一个代码转换为 lambda,因为Comparator
它是具有单个抽象函数的功能接口。
我读过文档。比较器是一个接口。
是的,它是一个接口,但是上面的代码所做的是它立即创建了一个单例实例Comparator
更新:我错误地认为它是一个单例,但正如 gidds 指出的那样,每次执行都会创建一个新实例。
推荐阅读
- vhdl - VHDL:将乘法和切片组合成一行
- reactjs - 无法在尚未安装的组件上调用 setState。- 反应
- c++ - 使用填充构造函数实例化向量的 C++ 无错误
- html - jQuery 数组到拆分的 json
- python - 从一开始就增加验证损失
- c++ - FFmpeg 在运行时更改音频过滤器参数
- javascript - 销毁/重新启动 PHP 中的不同会话
- android - NavController 添加片段而不是替换而不使用 Dialog
- css - 如何让子 div 填充父 div 在 CSS 中保持父填充?
- flutter - Flutter futurebuilder嵌套期货返回null