我正在学习Kotlin的过程中,遇到了一个我无法弄清楚的问题。 我想在Kotlin中扩展Java类的RuntimeException,并且能够在不同的情况下使用它的三个构造函数中的任何一个(根据我当时想要抛出异常的信息)。在java中我的课是这样的:在Kotlin中,如何扩展具有多个构造函数的类?
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);
}
}
当我尝试这样做在科特林,我用这个答案作为指导:Kotlin secondary constructor不过,我有一个问题,试图找出如何调用相应的超构造函数正确。例如,使用功能似乎是一个好办法,这样的:
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) {
}
然而,在上面这个科特林例子,我总是调用超构造函数有两个参数,而不是调用最合适的构造情况。所以我上面有什么工作,但并没有做到它在Java中会做什么,在每种情况下调用不同的构造函数。 我也尝试在上面的每个乐趣里面实例化一个新的RuntimeException,并将其转换为PhotoLibException,但我没有被允许这样做。
任何人都可以建议我怎么会在Kotlin中正确地做到这一点?