Страницы

Поиск по вопросам

воскресенье, 2 февраля 2020 г.

Static метод в kotline

#java #android #kotlin


Есть метод в java:

public static Locale parseStringLocale(String locale) {
    return locale.length() > 2
            ? new Locale(locale.substring(0, 2), locale.substring(3))
            : new Locale(locale);
}


При попытке сконвертировать его в kotlin получается нечто подобное:

fun parseStringLocale(locale: String): Locale {
    return if (locale.length > 2)
        Locale(locale.substring(0, 2), locale.substring(3))
    else
        Locale(locale)
}


Но он уже не static, ему стоит как то приклеить companion object или как можно решить
вопрос, для будущего вызова данного метода.
    


Ответы

Ответ 1



Статические методы в Kotlin задаются через companion object т.е. в вашем случае companion object{ fun parseStringLocale(locale: String): Locale { return if (locale.length > 2) Locale(locale.substring(0, 2), locale.substring(3)) else Locale(locale) } }

Ответ 2



Я бы рекомендовал в Kotlin заменять служебные методы (util) на extensions. Модификатор static убрали не для того, чтобы все методы перемещать в компаньон. Я бы сделал так: fun String.toLocale(): Locale { //здесь ваша логика, обращайтесь к данному String с помощью this } Если вы же хотите сделать util класс, можно сделать просто object: object LocaleUtils { //fun parseStringLocale... }

Комментариев нет:

Отправить комментарий