我有一个简单的问题但无法在任何地方找到答案。
我有以下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中实现它?谢谢!
答案 0 :(得分:2)
只需将callSomeInitMethod
的调用放入课程正文中即可。这使它成为主构造函数(因此,所有辅助构造函数)的一部分:
abstract class BaseComponent(context : Context, attrs : AttributeSet)
extends FrameLayout(context, attrs)
{
callSomeInitMethod()
def this(context : Context) = {
this(context, null)
}
}