ANDROID_LIVE Telegram 940
​​Как работает reified?
#kotlin

Kotlin предлагает множество крутых фичей, которые делают написание кода проще и удобнее. reified — одна из них, и так как подобная функция есть далеко не во всех языках программирования, то многие разработчики не совсем понимают, для чего им она нужна.

💡Давайте рассмотрим пару кейсов, когда мы можем сделать наш код чище и более "Kotlin-style".

С reified непосредственно связано понятие inline функций и использование generics. При их использовании может потребоваться знание того, какого типа класс мы используем. Рассмотрим пример маппинга json в нужный нам класс:

fun <T> String.toKotlinObject(): T {
val mapper = jacksonObjectMapper()
//does not compile!
return mapper.readValue(this, T::class.java)
}


Чтобы исправить ошибку при компилировании, у нас есть две опции.

1️⃣ Передавать класс в параметрах. Тогда наша функция будет выглядеть так:

fun <T: Any> String.toKotlinObject(c: KClass<T>): T {
val mapper = jacksonObjectMapper()
return mapper.readValue(this, c.java)
}


А её вызов будет таким: jsonTypeAsString.toKotlinObject(MyJsonType::class).

2️⃣ Использовать reified. Тогда всё станет сильно удобнее и красивее:

inline fun <reified T: Any> String.toKotlinObject(): T {
val mapper = jacksonObjectMapper()
return mapper.readValue(this, T::class.java)
}


А вызов будет таким: json.toKotlinObject<MyJsonType>().

Как мы видим, второй вариант выглядит гораздо более удобным для использования, хотя наш пример — довольно простая функция. В более сложных кейсах это преимущество может быть ещё заметнее.

Больше подробностей о reified можно найти в этой небольшой статье. 🤓
👍28👎1



tgoop.com/android_live/940
Create:
Last Update:

​​Как работает reified?
#kotlin

Kotlin предлагает множество крутых фичей, которые делают написание кода проще и удобнее. reified — одна из них, и так как подобная функция есть далеко не во всех языках программирования, то многие разработчики не совсем понимают, для чего им она нужна.

💡Давайте рассмотрим пару кейсов, когда мы можем сделать наш код чище и более "Kotlin-style".

С reified непосредственно связано понятие inline функций и использование generics. При их использовании может потребоваться знание того, какого типа класс мы используем. Рассмотрим пример маппинга json в нужный нам класс:

fun <T> String.toKotlinObject(): T {
val mapper = jacksonObjectMapper()
//does not compile!
return mapper.readValue(this, T::class.java)
}


Чтобы исправить ошибку при компилировании, у нас есть две опции.

1️⃣ Передавать класс в параметрах. Тогда наша функция будет выглядеть так:

fun <T: Any> String.toKotlinObject(c: KClass<T>): T {
val mapper = jacksonObjectMapper()
return mapper.readValue(this, c.java)
}


А её вызов будет таким: jsonTypeAsString.toKotlinObject(MyJsonType::class).

2️⃣ Использовать reified. Тогда всё станет сильно удобнее и красивее:

inline fun <reified T: Any> String.toKotlinObject(): T {
val mapper = jacksonObjectMapper()
return mapper.readValue(this, T::class.java)
}


А вызов будет таким: json.toKotlinObject<MyJsonType>().

Как мы видим, второй вариант выглядит гораздо более удобным для использования, хотя наш пример — довольно простая функция. В более сложных кейсах это преимущество может быть ещё заметнее.

Больше подробностей о reified можно найти в этой небольшой статье. 🤓

BY Android Live 🤖




Share with your friend now:
tgoop.com/android_live/940

View MORE
Open in Telegram


Telegram News

Date: |

How to Create a Private or Public Channel on Telegram? Write your hashtags in the language of your target audience. Joined by Telegram's representative in Brazil, Alan Campos, Perekopsky noted the platform was unable to cater to some of the TSE requests due to the company's operational setup. But Perekopsky added that these requests could be studied for future implementation. Hashtags are a fast way to find the correct information on social media. To put your content out there, be sure to add hashtags to each post. We have two intelligent tips to give you: Users are more open to new information on workdays rather than weekends.
from us


Telegram Android Live 🤖
FROM American