从Scala调用受保护的静态Java方法

时间:2010-12-15 00:20:16

标签: scala scala-java-interop

我这里有一个带有一些Java类的库。一个类有一些protected static方法,我意识到这是一个OOP禁止 - 但我不能改变它的代码。假设我有一个Scala类,它是上述Java类的子类,我该如何调用其受保护的静态成员?

1 个答案:

答案 0 :(得分:20)

请参阅 Frequently Asked Questions - Java Interoperability

  

这是Scala的一个已知限制:   没有'静态'成员的概念   在斯卡拉。相反,Scala会对待   Y类的静态成员作为成员   单身对象Y(   Y类的伴侣对象。什么时候   从这个类继承,可以   只访问受保护的类成员   Y但无法访问受保护的成员   对象Y。

     

Scala无法模拟   静电保护而不会损害   Scala的对象模型的完整性   根本的方式,所以这不是   改变。解决这个问题   限制,一个人必须创建一个   封闭类的实现   使用Java代码封装所有   访问受保护的静态内部   类。

     

有关详情,请参阅ticket #1806   信息和一个具体的例子   限制及其解决方法