嘿,我想在kotlin中创建一个类,该类将包含我将在几个地方使用的所有扩展功能,例如:

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类中将使它们仅在DateUtils类中可用。

如果希望扩展是全局扩展,则可以将其放在文件的顶层,而不必将其放在类中。

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 - Kotlin中的全局扩展功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44347533/

10-11 03:41