首页 > 解决方案 > 有没有办法使伴生对象函数私有并将伴生对象导入类然后访问该函数?

问题描述

有人告诉我将伴生对象函数设为私有并将伴生对象导入类,然后访问类中的函数。

以下代码在 repl 中不起作用。

例子:

object Foo {
  private def bar(i: Int): Boolean = i == 5
}

class Foo{
  import Foo._

  bar(0) 
}

object Foo {
  private def bar(i: Int): Boolean = i == 5
}

class Foo{
  import Foo._

  Foo.bar(0) 
}
scala> object Foo {
     |   private def bar(i: Int): Boolean = i == 5
     | }
defined object Foo

scala> 

scala> class Foo{
     |   import Foo._
     | 
     |   bar(0) 
     | }
<console>:15: error: not found: value bar
         bar(0)
         ^

scala> 

scala> object Foo {
     |   private def bar(i: Int): Boolean = i == 5
     | }
defined object Foo

scala> 

scala> class Foo{
     |   import Foo._
     | 
     |   Foo.bar(0) 
     | }
<console>:15: error: method bar in object Foo cannot be accessed in object Foo
         Foo.bar(0)
             ^

标签: scala

解决方案


根据文档

伴随对象及其类可以访问彼此的私有成员

问题可能是在 REPL 中它没有将其识别为伴侣。尝试:paste启用模式。


推荐阅读