3

Javaで実装されているクラスを拡張したい。次に例を示します。

public interface JavaInterface {
    /** Computes foo. */
    public String foo();
}

public class ThisIsJava implements JavaInterface {
    protected String foo = "foo";

    /** Returns value of property foo. */
    public String foo() { return foo; }
}

しかし、Scalaでこのクラスを拡張するときに、フィールドとメソッドfooを明確にするにはどうすればよいですか?

class ThisIsScala extends ThisIsJava {
  def fooBar = super.foo + "/bar" // doesn't compile
}
4

1 に答える 1

7

fooプライベートのため、フィールドにアクセスできません。アクセスできるのはsuper.foo()

更新:Scalaではフィールドとメソッドの区別がないため、この問題があると思います。したがって、唯一のオプションオプションは、ThisIsJava用のアダプターを用意し、そのアダプターをScalaで拡張することです。

于 2012-06-05T07:50:15.127 に答える