是否可以在 scala 中扩展在 3rd 方 jar 中定义的包私有类。因此,例如,如果我的代码所依赖的第 3 方 jar 具有这样的类
private [somepackage] A {
}
我可以在我的代码中以某种方式子类这个类吗?
谢谢
是否可以在 scala 中扩展在 3rd 方 jar 中定义的包私有类。因此,例如,如果我的代码所依赖的第 3 方 jar 具有这样的类
private [somepackage] A {
}
我可以在我的代码中以某种方式子类这个类吗?
谢谢
不是根据Scala 3rd Ed 中的编程。,转述:
package a
package b {
private[a] class B
}
包外的所有代码
a
都不能访问类B
请注意,此处的 packageb
位于 package 中a
。
奇怪的是,在 REPL 中似乎并非如此:请参阅这篇文章
不,你不能那样做。
如果您需要它来存根/模拟它,请考虑使用代理来访问 A 类,并改为存根/模拟该代理类。例如,如果 A.doStuff 是您想要模拟/存根的,而 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
是你现在的工作