0

我有一个简单的问题,但在任何地方都找不到答案。

我有以下java代码。FrameLayout 是一个具有 2 个构造函数的 android 类:

public class FrameLayout {
  public FrameLayout(Context context){ //do something
  }
  public FrameLayout(Context context, AttributeSet attrs){ //do something
  }
  ....
}

public class ClassA extends FrameLayout{
  public ClassA(Context c){ 
      super(c);
      callSomeInitMethod();
  }

  public ClassA(Context a, AttributeSet b){ 
        super(a,b);
        callSomeInitMethod();
  }
}

我有以下scala代码,但它与默认构造函数不调用'callSomeInitMethod()'不同:

abstract class BaseComponent(context : Context, attrs : AttributeSet)
                                 extends FrameLayout(context, attrs) {
  def this(context : Context) = {
    this(context, null)
    callSomeInitMethod()
  }

如何在 Scala 中实现这一点?谢谢!。

4

1 回答 1

2

只需将调用callSomeInitMethod放入类主体即可。这使它成为主构造函数的一部分(因此,所有辅助构造函数):

abstract class BaseComponent(context : Context, attrs : AttributeSet)
    extends FrameLayout(context, attrs) 
{
  callSomeInitMethod()

  def this(context : Context) = {
    this(context, null)
  }
}
于 2013-03-07T19:05:13.423 回答