【runoob.13】对象表达式和对象声明

匿名对象

请注意,匿名对象可以用作只在本地和私有作用域中声明的类型。如果你使用匿名对象作为公有函数的 返回类型或者用作公有属性的类型,那么该函数或属性的实际类型 会是匿名对象声明的超类型,如果你没有声明任何超类型,就会是 Any。在匿名对象 中添加的成员将无法访问。

class C {
 // 私有函数,所以其返回类型是匿名对象类型
 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”
 }
}

在对象表达

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容