如何从内部对象引用外部伴生对象的属性?
在嵌套对象函数中引用外部伴生对象的属性
因为foo函数的参数str和伴生对象的str同名,直接使用str会优先取局部参数,所以需要通过类名或者伴生对象的显式名称来限定访问:
方法一:通过类名直接访问
伴生对象的成员可以直接通过所属类的名称调用,修改代码如下:
class SomeClass { companion object { val str = "My String" object AnotherObject { fun foo(str: String) { return str + SomeClass.str } } } }
方法二:给伴生对象命名后访问
如果给伴生对象指定一个名称,也可以通过该名称访问其属性:
class SomeClass { companion object Companion { val str = "My String" object AnotherObject { fun foo(str: String) { return str + Companion.str } } } }
两种方式都能明确区分局部参数和伴生对象的str属性,解决名称遮蔽问题。
内容的提问来源于stack exchange,提问作者Some Name
相关产品推荐
相关产品推荐

