首发于公众号: DSGtalk1989
12.对象表达式和对象声明
-
方法返回匿名对象
我们也可以直接将
object
关键字修饰的匿名类赋值给方法,表明这个方法返回的是一个匿名内部类对象。同时私有方法返回的匿名对象的属性是可以在本地被访问的,非私有方法返回的匿名对象的属性是不能访问的。
// 私有函数,所以其返回类型是匿名对象类型 private fun foo() = object { val x: String = "x" } // 公有函数,所以其返回类型是 Any fun publicFoo() = object { val x: String = "x" } fun bar() { val x1 = foo().x // 没问题 val x2 = publicFoo().x // 错误:未能解析的引用“x” }
-
对象声明
object
关键字可以直接来声明对象,比如: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)
}
发现s1
和s2
的url
都改了。
Kotlin学习笔记之 13 基础操作符run、with、let、also、apply