私はScalaに移植したJavaクラスを持っていますが、まだ抽象機能を実装するいくつかのJavaサブクラスを持っています。ScalaでJavaで保護されたアクセスでメソッドを作成できますか?
元のJavaは、Scalaの
にpublic class Fred extends Base {
...
protected Foo getFoo() {
return foo;
}
}
今とき、私ポートベース延長された
public abstract class Base {
...
protected abstract Foo getFoo();
}
を持っていた
class Base {
...
protected def getFoo(): Foo
}
コンパイラは文句を言い、その
継承されたメソッドの可視性を減らすことができない...
今、私はそのルールが微妙に異なるためからgetfooがあるように、Scalaは、コンパイラではなく、バイトコードでの視認性を強化する傾向があることを理解javap'dクラスでpublicとマークされています。しかし、
protected[packagename] def getFoo()
でも、私は視認性は同じでなければならないと思うが、プカ(Java)保護メソッドを生成しない。
Javaが保護されていると考えられるメソッドを発行するようにScalaコンパイラを説得する方法はありますか?
私は信頼できる「いいえ」を受け入れるでしょう –
優秀な質問。私はこのページに達する前にまったく同じ道をたどった。 – ebruchez