我正在學習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中正確地做到這一點?