scala – 为什么我的嵌套伴随对象的成员在类中不会自动显示?
发布时间:2020-12-16 09:01:21 所属栏目:安全 来源:网络整理
导读:假设我有这个 Scala代码: object Outer { object Inner { val B = "B" } class Inner { def b = B }} 我希望这能编译,但不能从b的定义访问B.我需要在类中添加import Inner._ Innerto使它工作.这是为什么?伴侣对象Inner是否未正确定义? 解决方法 它不应该
假设我有这个
Scala代码:
object Outer { object Inner { val B = "B" } class Inner { def b = B } } 我希望这能编译,但不能从b的定义访问B.我需要在类中添加import Inner._ Innerto使它工作.这是为什么?伴侣对象Inner是否未正确定义? 解决方法
它不应该以这种方式工作 – 使用import Inner._是一致的行为.
通常,如果要在Java中实现类似于静态成员的行为,则需要伴随对象. Scala方法是将所有静态成员移动到单个对象,这样可以从中访问协同类的私有/受保护成员: object Outer { object Inner { def print(inner: Inner) = inner.B // compiles! } class Inner { private val B = "B" } } 您可以将伴随对象用作具有私有构造函数的类的工厂: scala> object Outer { | | object Inner { | def newInstance = new Inner() | } | class Inner private() { | private val B = "B" | } | } defined module Outer scala> Outer.Inner.newInstance res1: Outer.Inner = Outer$Inner@431693 scala> new Outer.Inner <console>:7: error: constructor Inner cannot be accessed in object $iw new Outer.Inner ^ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容