kotlin中的全局扩展函数
Global extension function in kotlin
嘿,我想在 kotlin 中制作一个 class,它将包含我将在几个地方使用的所有扩展函数,例如:
class DateUtils {
//in this case I use jodatime
fun Long.toDateTime() : DateTime = DateTime(this)
fun String.toDateTime() : DateTime = DateTime.parse(this)
}
class SomeClassWithNoConnectionToDateUtils {
fun handleDataFromServer(startDate: String) {
someOtherFunction()
//startDate knows about toDateTime function in DateUtils
startDate.toDateTime().plusDays(4)
}
}
有没有办法执行这样的操作
将您的扩展放在 DateUtils
class 中将使它们只能在 DateUtils
class.
中使用
如果您希望扩展名是全局的,您可以将它们放在文件的顶层,而不是将它们放在 class.
中
package com.something.extensions
fun Long.toDateTime() : DateTime = DateTime(this)
fun String.toDateTime() : DateTime = DateTime.parse(this)
然后像这样导入它们以在其他地方使用它们:
import com.something.extensions.toDateTime
val x = 123456L.toDateTime()
嘿,我想在 kotlin 中制作一个 class,它将包含我将在几个地方使用的所有扩展函数,例如:
class DateUtils {
//in this case I use jodatime
fun Long.toDateTime() : DateTime = DateTime(this)
fun String.toDateTime() : DateTime = DateTime.parse(this)
}
class SomeClassWithNoConnectionToDateUtils {
fun handleDataFromServer(startDate: String) {
someOtherFunction()
//startDate knows about toDateTime function in DateUtils
startDate.toDateTime().plusDays(4)
}
}
有没有办法执行这样的操作
将您的扩展放在 DateUtils
class 中将使它们只能在 DateUtils
class.
如果您希望扩展名是全局的,您可以将它们放在文件的顶层,而不是将它们放在 class.
中package com.something.extensions
fun Long.toDateTime() : DateTime = DateTime(this)
fun String.toDateTime() : DateTime = DateTime.parse(this)
然后像这样导入它们以在其他地方使用它们:
import com.something.extensions.toDateTime
val x = 123456L.toDateTime()