首页 > 解决方案 > 如何在kotlin中定义一个只有一个带有body的构造函数的类?

问题描述

我想定义一个只有一个带有 body 的构造函数的类。当我设置类的参数时,我无法定义主构造函数的主体。我希望这个类只有一个构造函数。

敌人的例子

我有一个扩展 CursorWrapper 的类。此类具有需要超类实现的参数。我需要一个带有一个参数的构造函数:

class wrapper(cursoe: Cursor): CursoreWrapper {
    // i need to call super(cursor). But where?
}

标签: androidkotlinconstructor

解决方案


如果你想调用 cursor,这意味着你的CursorWrapper(这里显然是错字)至少是一个抽象类,而不是一个接口。

从你的问题来看,它也接收cursor(另一个错字)作为参数,所以我们得到这样的东西:

open class CursorWrapper(cursor: Cursor)

现在,要调用此构造函数,您只需在从类继承时调用它:

class Wrapper(cursor: Cursor): CursorWrapper(cursor) // <- this is your super(cursor)

现在让我们假设您还CursorWrapper需要在构造过程中调用另一个函数。

open class CursorWrapper(cursor: Cursor) {
    fun bla() { 
       // You want to call this for some reason as super.bla()
    }
}

您可以init()为此使用块。

class Wrapper(cursor: Cursor): CursorWrapper(cursor) {
    // i need to call super(cursor). But where?
    init {
        super.bla()
    }
}

推荐阅读