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