我尝试像这样调用父级的第二个构造函数
StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
instantCategoryList.setItemAnimator(new DefaultItemAnimator());
instantCategoryList.setAdapter(instantCategoryAdapter);
instantCategoryList.setHasFixedSize(true); //Size of RV will not change
instantCategoryList.setLayoutManager(staggeredGridLayoutManager);
staggeredGridLayoutManager.invalidateSpanAssignments();
instantCategoryList.setNestedScrollingEnabled(false);
,但会产生abstract class A(val i: Int) {
constructor(c: C) : this(c.i)
}
class B() : A(0) {
constructor(c: C) : super(c) // error is here
}
class C(val i: Int)
错误。子类如何调用父级的辅助构造函数?
答案 0 :(得分:6)
根据doc:
如果该类具有主要构造函数,则每个次要构造函数 需要直接或直接委派给主要构造函数 间接通过另一个辅助构造函数。使用this关键字可以委派给同一类的另一个构造函数
您为B
(即B()
)声明了一个主要构造函数,因此,该次要构造函数应调用其主要构造函数。
子类如何调用父级的辅助构造函数?
如果您希望二级构造函数调用父级的二级构造函数,则应首先删除B
的一级构造函数。
abstract class A(val i: Int) {
constructor(c: C) : this(c.i)
}
class B : A {
constructor(c: C) : super(c)
}
class C(val i: Int)