相关疑难解决方法(0)

在Scala中,如何为Java中定义的类定义伴随对象?

我想将隐式转换添加到由建模工具生成的Java类中.所以我想将它们添加到这些类的伴随对象中,以便编译器自动找到它们.但我无法将它们添加到单独的文件中,因为必须在同一文件中定义随播广告.我能做些什么吗?

当然,我可以在另一个对象中定义所有隐式转换,然后将其带入范围,但这需要额外的导入.还有其他方法吗?

scala implicit-conversion scala-java-interop companion-object

10
推荐指数
2
解决办法
2227
查看次数

Companion对象无法访问类上的私有变量

来自Scala REPL的一个相当奇怪的行为.

虽然以下编译没有问题:

class CompanionObjectTest {
    private val x = 3
}
object CompanionObjectTest {
    def testMethod(y:CompanionObjectTest) = y.x + 3
}
Run Code Online (Sandbox Code Playgroud)

私有变量似乎无法从REPL中的伴随对象访问:

scala> class CompanionObjectTest {
     | 
     | private val x = 3;
     | }
defined class CompanionObjectTest

scala> object CompanionObjectTest {
     | 
     | def testMethod(y:CompanionObjectTest) = y.x + 3
     | }
<console>:9: error: value x in class CompanionObjectTest cannot be accessed in CompanionObjectTest
       def testMethod(y:CompanionObjectTest) = y.x + 3
                                                 ^
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

scala read-eval-print-loop companion-object

8
推荐指数
1
解决办法
3088
查看次数