对象表达式:Object expression
对象表达式是一种结构,用来创建一个object的实例
举个栗子:
val coords = object {
var x = 10
var y = 10
}
和Java中的匿名函数是一个死样子:
window.addMouseListener(object : MouseAdapter() {
override fun mouseClicked(e: MouseEvent) { …… }
override fun mouseEntered(e: MouseEvent) { …… }
})
对象声明:Object declaration
基本是个单例声明啊,比如
object HttpService {
val api = retrofit.create(Api::class.java)
fun post(url: String) = api.post(url)
}
这里的HttpService是个class好不啦,而且只会有一个instance,所以可以直接调用其中定义的函数:
HttpService.post("wwww.myurl.com/event")
和
val service: HttpService = HttpService
service.post("wwww.myurl.com/event")
的效果是一毛一样的。
伴生对象:Companion object
伴生对象其实就是一个对象声明
只是他存在的位置在class里面鹅已。
class MyClass {
companion object Factory {
fun create(): MyClass = MyClass()
}
}
使用的时候把这货当做Java中的静态字段什么的用就可以了。但是切记它其实是一个类的实例。
网友评论