Scala - 自定义类构造函数

时间:2013-03-07 18:58:22

标签: android scala constructor

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

我有以下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中实现它?谢谢!

1 个答案:

答案 0 :(得分:2)

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

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

  def this(context : Context) = {
    this(context, null)
  }
}