在 Kotlin 中,擴展函數是一種為現有類添加新功能的方法。為了避免擴展函數之間的沖突,你可以采取以下幾種策略:
fun String.myExtensionFunction() {
// ...
}
fun StringBuilder.myExtensionFunction() {
// ...
}
fun main() {
val str = "Hello, world!"
str.myExtensionFunction() // 調用 String 版本的擴展函數
val sb = StringBuilder("Hello, world!")
sb.myExtensionFunction() // 調用 StringBuilder 版本的擴展函數
}
fun Int.myExtensionFunction() {
// ...
}
fun String.myExtensionFunction() {
// ...
}
fun main() {
val num = 42
num.myExtensionFunction() // 調用 Int 版本的擴展函數
val text = "Hello, world!"
text.myExtensionFunction() // 調用 String 版本的擴展函數
}
fun
更改為 companion object
中的 fun
來實現。例如:class MyClass {
companion object {
fun Int.myStaticExtensionFunction() {
// ...
}
fun String.myStaticExtensionFunction() {
// ...
}
}
}
fun main() {
val num = 42
num.myStaticExtensionFunction() // 調用 Int 版本的靜態擴展函數
val text = "Hello, world!"
text.myStaticExtensionFunction() // 調用 String 版本的靜態擴展函數
}
通過采用這些策略,你可以有效地避免 Kotlin 擴展函數之間的沖突。