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 に答える