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 回答