我刚开始使用 Kotlin,有一段 Java 代码需要转换成 Kotlin。以下是 Java 代码:
public class NonSwipeableViewPager extends ViewPager
{
public NonSwipeableViewPager(Context context) {
super(context);
setMyScroller();
}
public NonSwipeableViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
setMyScroller();
}
private void setMyScroller() {
//some code
}
}
如果这段代码只有一个构造函数,我可以这样写:
class NonSwipeableViewPager(context: Context): ViewPager(context) {
init {
setMyScroller()
}
private fun setMyScroller() {
//some code
}
}
然而,由于存在两个构造函数并且每个构造函数都调用super()
方法,我无法想象如何将此代码转换为Kotlin。最接近的实现方式是:
class NonSwipeableViewPager(context: Context): ViewPager(context) {
init {
setMyScroller()
}
constructor(context: Context?, attrs: AttributeSet?) : super(context!!, attrs) {
setMyScroller()
}
private fun setMyScroller() {
//some code
}
}
但是,在这段代码中,我在这一行super(context!!, attrs)
中遇到了以下错误:需要主构造函数调用
。那么,我该如何从次要构造函数中调用super()
呢?
init
块在两个构造函数之前被调用(但在super
调用之后)。