加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 18:14:44 所属栏目:安全 来源:网络整理
导读:我有带有受保护静态方法的 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
我有带有受保护静态方法的 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版本的一部分.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读