我有带有受保护静态方法的java类:
package parent;
public class Parent {
protected static void parentMethod() {
System.out.println("I'm in parent static method");
}
}
Run Code Online (Sandbox Code Playgroud)
在Scala 2.12.4(2.12.3)之前,我可以从另一个包中调用此方法,如下所示:
package child
import parent.Parent
class Child extends Parent {
def childMethod = {
println("I'm in child method and calling parentMethod")
Parent.parentMethod()
}
}
Run Code Online (Sandbox Code Playgroud)
但Scala 2.12.4不编译此代码.我收到错误:
错误:(9,12)在对象父类的方法parentMethod不能在对象parent.Parent访问访问到受保护的方法parentMethod不允许的,因为前缀类型parent.Parent.type不符合在包孩子在那里访问发生家长反对孩子.parentMethod()
这种访问模式对我来说非常重要,因为JOOQ代码生成使用它.
发生了什么?
不错,这很可能是此 PR引入的回归,作为此问题解决方案的一部分。
我已经为此开了一张票,您可以追踪。同时,如果这种访问模式对您的应用程序至关重要,那么不幸的是,我认为您没有太多选择,只能暂时坚持使用 Scala 2.12.3。
该问题已为人所知,并且已合并修复程序。截至撰写本文时,该补丁必然是 2.12.5 版本的一部分。
| 归档时间: |
|
| 查看次数: |
189 次 |
| 最近记录: |