Scala 2.12.4:无法再从另一个包访问受保护的静态Java方法

我有带有受保护静态方法的java类:

package parent;

public class Parent {

    protected static void parentMethod() {
        System.out.println("I'm in parent static method");
    }

}

在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()
  }

}

但Scala 2.12.4不编译此代码.我收到错误:

Error:(9, 12) method parentMethod in object Parent cannot be accessed
in object parent.Parent Access to protected method parentMethod not
permitted because prefix type parent.Parent.type does not conform to
object Child in package child where the access takes place
Parent.parentMethod()

这种访问模式对我来说非常重要,因为JOOQ代码生成使用它.

发生了什么?

最佳答案
很好的捕获,这很可能是this PR引入的回归,作为this issue解决方案的一部分.

我已经打开了a ticket,你可以跟踪.同时,如果这种访问模式对您的应用程序至关重要,不幸的是我认为您没有太多选择,只能暂时坚持使用Scala 2.12.3.

编辑

这个问题已经知道了,a fix has been already merged.截至撰写本文时,补丁必然是2.12.5版本的一部分.

转载注明原文:Scala 2.12.4:无法再从另一个包访问受保护的静态Java方法 - 代码日志