【发布时间】:2013-07-07 13:56:39
【问题描述】:
我正在使用的 Java 库类声明
protected getPage(): Page { ... }
现在我想制作一个辅助 Scala mixin 来添加我经常使用的功能。我不想扩展这个类,因为Java类有不同的子类我想在不同的地方扩展。问题是,如果我在我的 mixin trait 中使用 getPage(),我会收到此错误:
实现限制:trait
MyMixin在具体的 trait 方法中访问受保护的方法getPage。
有没有办法让它工作而不影响我的子类?为什么会有这个限制?
到目前为止,我想出了一个解决方法:我将 trait 中的方法重写为
override def getPage(): Page = super.getPage();
这似乎可行,但我并不完全满意。幸运的是,我不需要在我的子类中覆盖 getPage(),但如果需要,我会获得相同方法的两个覆盖,但这种解决方法将不起作用。
【问题讨论】:
标签: scala compiler-errors mixins protected traits