一、 object關鍵字
object
關鍵字可以表達兩種含義:一種是對象表達式
,另一種是 對象聲明
。
1、對象表達式
繼承一個匿名對象
val textView = findViewById<TextView>(R.id.tv)
textView.setOnClickListener(object : OnClickListener {
override fun onClick(p0: View?) {
Toast.makeText(this@TestActivity, "點擊事件生效", Toast.LENGTH_LONG)
}
})
上面代碼其實就是我們經常要給 view
設置的點擊事件,OnClickListener
事件是一個匿名類的對象,用object
來修飾。
2、對象聲明
用object
修飾的類爲靜態類,裏面的方法和變量都爲靜態
的。
2.1 直接聲明類
object DemoManager {
private val TAG = "DemoManager"
fun a() {
Log.e(TAG,"此時 object 表示 聲明靜態內部類")
}
}
2.2 聲明靜態內部類
類內部的對象聲明,沒有被inner
修飾的內部類都是靜態的
class DemoManager{
object MyObject {
fun a() {
Log.e(TAG,"此時 object 表示 直接聲明類")
}
}
}
如果需要調用 a()
方法
kotlin中調用
fun init() {
MyObject.a()
}
java中調用
MyObject.INSTANCE.a();