如何访问用Java实现的超类的字段,它也有一个同名的方法?

时间:2012-06-05 07:44:17

标签: java scala

我想扩展一个用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
}

1 个答案:

答案 0 :(得分:7)

您无法访问foo字段,因为它是私有的。您只能通过super.foo()访问它。

更新:我认为你有这个问题,因为在Scala中,字段和方法之间没有区别,所以唯一的选项选项是为ThisIsJava提供适配器,并在Scala中扩展该适配器。