Dun*_*gor 26 visibility scala protected
我有一个Java类,我已经移植到Scala,但仍然有一些Java子类实现抽象功能.
最初的Java有
public abstract class Base {
...
protected abstract Foo getFoo();
}
Run Code Online (Sandbox Code Playgroud)
这被延长了
public class Fred extends Base {
...
protected Foo getFoo() {
return foo;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我将Base移植到Scala
class Base {
...
protected def getFoo(): Foo
}
Run Code Online (Sandbox Code Playgroud)
编译器抱怨说
无法降低继承方法的可见性......
现在我明白了,因为它的规则略有不同,Scala倾向于在编译器中强制实现可见性而不是字节码,因此getFoo在javap类中被标记为public.但
protected[packagename] def getFoo()
Run Code Online (Sandbox Code Playgroud)
仍然没有生成pukka(Java)保护方法,虽然我认为可见性应该是相同的.
有没有办法说服Scala编译器发出一个Java会认为受保护的方法?
| 归档时间: |
|
| 查看次数: |
915 次 |
| 最近记录: |