当前位置: 首页 > 知识库问答 >
问题:

如何在Kotlin中扩展具有多个构造函数的类?

祁永嘉
2023-03-14

我在学习Kotlin的过程中遇到了一个我想不通的问题。我想在Kotlin中扩展Java类runtimeexception,并且能够在不同的情况下使用它的三个构造函数中的任何一个(基于我想抛出异常时所拥有的信息)。在java中,我的类将如下所示:

public class PhotoLibException extends RuntimeException {

    public PhotoLibException(String message, RuntimeException ex) {
        super(message, ex);
    }

    public PhotoLibException(String message) {
        super(message);
    }

    public PhotoLibException(RuntimeException ex) {
        super(ex);
    }
}
fun PhotoLibException(message: String): PhotoLibException {
    val ex = null
    return PhotoLibException(message, ex)
}

fun PhotoLibException(ex: Exception): PhotoLibException {
    val message = ""
    return PhotoLibException(message, ex)
}

class PhotoLibException(message: String, ex: Exception?): RuntimeException(message, ex) {
}

有人能建议我在Kotlin如何正确地做到这一点吗?

共有1个答案

鲜于阳
2023-03-14

更新:自M11(0.11.*)起,您可以使用二级构造函数来解决此问题:

class PhotoLibException : RuntimeException {
    constructor(message: String, ex: Exception?): super(message, ex) {}
    constructor(message: String): super(message) {}
    constructor(ex: Exception): super(ex) {}
}

目前,没有办法在不同上下文中从同一个类调用不同的超构造函数。不过,它将在未来几个月得到支持。

 类似资料:
  • 无论我用什么方法尝试,无论是主构造函数还是次构造函数,我都不知道如何在kotlin中声明一个带有超类和构造函数的新类。 这是我最想做的,但它给出了一个错误,期望成员声明。 这是我认为主要构造函数的外观,但它给出了相同的错误。在Internet上搜索没有帮助,我只能找到第二个示例。 那么,用一个超类和它的一个构造函数创建一个类的所有有效方法是什么呢?

  • 问题内容: 假设我们有以下代码: 当我们创建一个对象时,该对象最初称为父类构造函数。但是就像私人的一样- 我们收到一个错误。一个好的例子和解决这个问题的方法是多少? 问题答案: 没有出路。你必须创建一个可用的(,或默认)的超级构造函数能够延长。 这种表示法通常用于实用程序类或单例中,在这种情况下,您不希望用户通过扩展实例和实例化子类,或者只是通过调用类的构造函数来自己创建类的实例。 当您只有一个具

  • 问题内容: 嘿 语言是Java。我想扩展构造函数具有参数的此类。 这是主要的课程 这是儿童班 如何编写正确的语法?并且错误是“构造函数无法应用于给定类型” 问题答案: 您可以定义构造函数所需的任何参数,但是有必要将超类的一个构造函数作为自己的构造函数的第一行来调用。可以使用或来完成。

  • 我知道数据类就像kotlin中的简单模型一样,默认情况下带有getter和setter,并且非常简单: 是否可以为该数据类声明第二个构造函数?

  • 我有一个kotlin库项目,并使用进行测试。在我的测试中,我尝试使用以下函数: 是正确的行为吗?

  • 我是新手。我想在Person类驱动的Employee类中添加age参数。我怎么能在科特林做到?! 我的错误是这样的: 为什么不能在员工构造函数中使用var或val?!我犯了什么错误?