有没有可能在Scala中扩展在第三方jar中定义的包私有类



是否可以在第三方jar中定义的scala中扩展包私有类。例如,如果我的代码所依赖的第三方jar具有类似的类

private [somepackage] A {
}

我能在代码中以某种方式将这个类子类化吗?

感谢

不符合Scala第三版的编程。,转述:

package a
package b {
private[a] class B
}

a之外的所有代码都无法访问类B

请注意,此处,包b位于包a中。

奇怪的是,REPL中的情况似乎并非如此:见后

不,你不能那样做。

如果您需要它来存根/模拟它,可以考虑使用代理访问类a,并存根/模拟该代理类。例如,如果A.doStuff是您想要mock/stub的东西,而A.accessStuff是代码中需要的东西,那么创建一个类

class ADecorated(underlying: A) {
def doStuff() {
underlying.doStuff()
// whatever I want to do
}
def accessStuff() {
x = underlying.accessStuff()
// do something else and return
}
// Any other method you want to use
}

A.createA的使用替换为新的ADecorated(A.createA())ADecorated是您现在使用的

最新更新