Kotlin中的伴生对象:
companion object Obj {
var flag = false
fun plus(num1: Int, num2: Int): Int {
return num1 + num2
}
}
伴生对象相当于java当中的静态代码块,在Kotlin中不支持静态static,所以为了解决这个问题,Kotlin出现了companion object。
简单单例的代码:
package com.example.mykotlintest
/**
*@author: create by OlderJiao
*@date: 2019 2019/9/28 19:20
*/
class SingleTask1 {
//伴生对象 相当于java中的静态 可以直接类名打点调用
companion object{
private var instances : SingleTask1? = null
get() {
//field 在get中是指instances
if(field == null){
field = SingleTask1()
}
return field
}
fun get() : SingleTask1{
return instances!!//返回对象
}
}
}
- field 关键字 这个问题对 Java 开发者来说十分难以理解,网上有很多人讨论这个问题,但大多数都是互相抄,说不出个所以然来,要说还是老外对这个问题的理解比较透彻,可以参考这个帖子:https://stackoverflow.com/questions/43220140/whats-kotlin-backing-field-for/43220314
测试代码:
/**
* 测试方法
*/
@Test
fun TestSingle(){
val task1 = SingleTask1.get()
val task2 = SingleTask1.get()
println(task1 == task2)
}
结果: