我这里有一个带有一些Java类的库。一个类有一些protected static
方法,我意识到这是一个OOP禁止 - 但我不能改变它的代码。假设我有一个Scala类,它是上述Java类的子类,我该如何调用其受保护的静态成员?
答案 0 :(得分:20)
请参阅 Frequently Asked Questions - Java Interoperability :
这是Scala的一个已知限制: 没有'静态'成员的概念 在斯卡拉。相反,Scala会对待 Y类的静态成员作为成员 单身对象Y( Y类的伴侣对象。什么时候 从这个类继承,可以 只访问受保护的类成员 Y但无法访问受保护的成员 对象Y。
Scala无法模拟 静电保护而不会损害 Scala的对象模型的完整性 根本的方式,所以这不是 改变。解决这个问题 限制,一个人必须创建一个 封闭类的实现 使用Java代码封装所有 访问受保护的静态内部 类。
有关详情,请参阅ticket #1806 信息和一个具体的例子 限制及其解决方法。