首發(fā)于公眾號: DSGtalk1989
12.對象表達(dá)式和對象聲明
-
方法返回匿名對象
我們也可以直接將
object
關(guān)鍵字修飾的匿名類賦值給方法姻蚓,表明這個方法返回的是一個匿名內(nèi)部類對象。同時私有方法返回的匿名對象的屬性是可以在本地被訪問的死讹,非私有方法返回的匿名對象的屬性是不能訪問的。
// 私有函數(shù)鹤耍,所以其返回類型是匿名對象類型 private fun foo() = object { val x: String = "x" } // 公有函數(shù),所以其返回類型是 Any fun publicFoo() = object { val x: String = "x" } fun bar() { val x1 = foo().x // 沒問題 val x2 = publicFoo().x // 錯誤:未能解析的引用“x” }
-
對象聲明
object
關(guān)鍵字可以直接來聲明對象验辞,比如:object Site { var url:String = "" val name: String = "菜鳥教程" }
這個對象可以賦值給不同的變量稿黄,但是多個變量同時指向的是一個對象,一旦一個變量改動了對象的某個屬性跌造,所有的變量都會變杆怕。
object Site {
var url:String = ""
val name: String = "菜鳥教程"
}
fun main(args: Array<String>) {
var s1 = Site
var s2 = Site
s1.url = "www.runoob.com"
println(s1.url)
println(s2.url)
}
發(fā)現(xiàn)s1
和s2
的url
都改了。
Kotlin學(xué)習(xí)筆記之 1 基礎(chǔ)語法
Kotlin學(xué)習(xí)筆記之 2 基本數(shù)據(jù)類型
Kotlin學(xué)習(xí)筆記之 4 循環(huán)控制
Kotlin學(xué)習(xí)筆記之 9 數(shù)據(jù)類與密封類
Kotlin學(xué)習(xí)筆記之 12 對象表達(dá)式和對象聲明
Kotlin學(xué)習(xí)筆記之 13 基礎(chǔ)操作符run壳贪、with陵珍、let、also违施、apply
Kotlin學(xué)習(xí)筆記之 14 包與導(dǎo)入
Kotlin學(xué)習(xí)筆記之 18 函數(shù)
Kotlin學(xué)習(xí)筆記之 19 高階函數(shù)與 lambda 表達(dá)式
Kotlin學(xué)習(xí)筆記之 20 內(nèi)聯(lián)函數(shù)
Kotlin學(xué)習(xí)筆記之 21 解構(gòu)聲明
Kotlin學(xué)習(xí)筆記之 28 協(xié)程基礎(chǔ)
Kotlin學(xué)習(xí)筆記之 29 上下文與調(diào)度器
Kotlin學(xué)習(xí)筆記之 30 協(xié)程取消與超時
Kotlin學(xué)習(xí)筆記之 31 協(xié)程掛起函數(shù)的組合