object:对象
一般两种用法:
1.定义单例,实际实现方式是通过类加载机制达到线程安全。
从以下两种方式可以论证:一方面可通过AS-->Tools-->Kotlin-->show kotlin bytecode,右侧点击decompile。另一方面可通过java的调用方式xxx.INSTANCE。
object Sington {
val name = "Sington"//直接通过Sington.name调用
fun printlnName() {//直接通过Sington.printlnName()调用
}
}
2.声明匿名内部类:作用类似于java中生命匿名内部类时候的new关键字
textView.setOnClickListener(object : OnClickListener {
override fun onClick(p0: View?) {
}
})
companion object:伴生对象。
类似于java类中的静态方法静态属性的一个集合代码块。
主要用来表示类中的常量集合,解决kotlin中没有static的问题,其作用类似于顶级函数和顶级属性。
疑惑:伴生对象的作用和顶级函数、顶级属性的作用基本相同,那么区别在哪?
区别:限定属性和方法的归属者,避免造成提示污染