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

时间:2018-01-20 06:39:45

标签: scala

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

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(2.12.3)之前,我可以从另一个包中调用此方法:

@Html.EditorFor(model => model.StartDate, new { htmlAttributes = new { @class = "datepicker", @Value = model.StartDate.ToString("yyyy/MM/dd") } })

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

  

错误:(9,12)方法parentMethod in object Parent无法访问   在对象parent.Parent访问受保护的方法parentMethod不   允许,因为前缀类型parent.Parent.type不符合   object访问发生的包子中的子项       Parent.parentMethod()

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

发生了什么事?

1 个答案:

答案 0 :(得分:4)

很好,这很可能是this PR引入的回归,作为this issue解决方案的一部分。

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

修改

该问题已为人所知a fix has been already merged。截至撰写本文时,补丁必然是2.12.5版本的一部分。