Функция глобального расширения в котлине

Эй, я хочу создать класс в 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)
    }
}

Есть ли способ выполнить такую ​​операцию

1 ответ

Решение

Наличие ваших расширений внутри 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()
Другие вопросы по тегам