Описание тега kotlin-inline-class

Начиная с версии 1.3+, Kotlin представляет особый вид класса, называемый встроенным классом, который объявляется путем размещения модификатора inline перед именем класса. Они предоставляют способ обернуть тип, тем самым добавляя функциональность и создавая сам по себе новый тип. В отличие от обычных оберток, они получат более высокую производительность. Это происходит потому, что данные встроены в их использование, а создание экземпляра объекта пропускается в скомпилированном коде.
2 ответа

Методы Kotlin, принимающие встроенные классы в качестве параметров - как доступ из Java?

Допустим, у меня есть: inline class Email(value: String) а также fun something(email: Email) сейчас, если я хочу позвонить something() с Java не могу. Потому что любой метод, который принимает встроенный класс в качестве параметра, является "искажен…
1 ответ

Интегрированный класс Kotlin в тестах JUnit

Я пытаюсь понять концепцию встроенных классов - они являются простой оберткой объекта с одним свойством, которое встроено во время выполнения. Это означает, что фактическая инициализация класса не происходит во время выполнения Я пытался написать пр…
0 ответов

Есть ли способ реализовать Cleaner с помощью других примитивов, кроме упаковки их в классы?

Итак, у нас есть оболочка kotlin вокруг vulkan, которая использует встроенные классы для идентификаторов vulkan (которые обычно Longs) Насколько я получил, Java (9+) Cleaner Предполагается работать только с классами. Вот пример Я пытался изменить эт…
24 апр '19 в 15:09
2 ответа

Сохранение встроенного класса Kotlin в MongoDB с данными Spring

Я пытаюсь сохранить встроенный класс Kotlin (v1.3.61) в MongoDB, используя Spring Data MongoDB (2.2.3-RELEASE), но пока безуспешно. Это настройка: inline class UserId(@NotBlank val id: String) а также @Document(collection = "data") class Data( @Fiel…
1 ответ

Можно ли сделать безопасную встроенную опцию в Котлине?

В Котлине иногда приходится работать с двойным допуском к нулю. Например, мне нужна двойная допустимость значения NULL, когда я хочу использоватьT? где Tможет быть типом, допускающим значение NULL. Для этого есть несколько подходов: Holder<T>?…
06 окт '19 в 14:15
1 ответ

Утечка памяти: анонимный класс, реализующий io.reactivex.Observer

Я работаю над Android-проектом. Некоторые из моих мероприятий расширяютсяSiteFinderActivity. Этот класс отвечает за проверку текущего сеанса и передачу его своим потомкам с помощью нескольких абстрактных функций. Я использую RxRelay JakeWharton, что…
1 ответ

Встроенный класс Kotlin, который реализует интерфейс под капотом

В версии 1.3.0 kotlin для разработчиков стали доступны встроенные классы. "Нормальные" встроенные классы обещают не быть реальными объектами во время выполнения, а существуют только во время компиляции для проверки типов. Так например inline class M…
17 дек '19 в 03:38
3 ответа

Встроенный класс Kotlin для свойств с аннотацией @Id

В моей бизнес-логике мне приходится иметь дело с множеством идентификаторов сущностей, все из которых имеют тип String, что может вызвать путаницу, особенно когда вы передаете пару из них в качестве параметров метода. Поэтому я подумал о том, чтобы …
1 ответ

Неразрешенная ссылка: JvmInline На детской площадке Котлина

Это точный фрагмент кода классов значений, взятый с официального сайта kotlin . interface I @JvmInline value class Foo(val i: Int) : I fun asInline(f: Foo) {} fun <T> asGeneric(x: T) {} fun asInterface(i: I) {} fun asNullable(i: Foo?) {} fun &…
07 фев '21 в 09:12
0 ответов

Классы значений в дженериках - взаимодействие с Java/Groovy

Я борюсь с классами значений в обобщениях и совместимостью с Java или Groovy. Классы значений встроены: Встроенные классы | Котлин 1, кроме дженериков. Учитывая следующий класс значений и интерфейс (Kotlin): @JvmInline value class ValueClass(val id:…
2 ответа

Класс Parcelize Value (встроенный) в Котлине

На первый взгляд кажется нормальным украсить класс значений котлина (встроенный) следующим образом: @JvmInline @Parcelize value class TestClass(val value: Long) : Parcelable Но сборка не сообщает: ошибка: неожиданный тип общедоступный статический ок…
15 ноя '21 в 19:59
1 ответ

Kotlin: встроенная функция и общий тип

Я хочу вызвать несколько вызовов API одновременно, используя сопрограммы. До сих пор я использовал сопрограммы только для вызова одного вызова API, который возвращал результат в форме успеха или ошибки. Его использование встроенной функции. Но мне н…
2 ответа

Невозможно использовать «T» в качестве параметра овеществленного типа, даже если я объявил, что T должен быть любым классом, унаследованным Parcelable

Поскольку я еще не силен в дженериках, я хотел бы спросить: Вопрос: почему я не могу сообщить функцииgetResultчто возвращаемое значение изbundle.getParcelableCompat<T>(BUNDLE_KEY)было бы типаT(какой класс наследует Parcelable)? Я получаю сообщ…
0 ответов

Можно ли отключить встраивание классов значений в Kotlin?

Цель Я хотел бы глобально отключить встраивание@JvmInline value classклассы через флаг компилятора или что-то подобное. Я хотел бы сделать это при запуске модульных тестов, но не в производстве. Мотивация Я хотел бы использовать mockk с классами зна…
07 окт '22 в 21:21
0 ответов

Kotlin работает с классами значений в библиотеках типа hibernate/jackson

Есть ли способ заставить классы значений kotlin (обновленные встроенные классы) работать с такими библиотеками, как Jackson и Hibernate, и заставить их рассматривать класс значений просто как базовый тип? В настоящее время я получаю кучу ошибок, гов…
0 ответов

Как использовать классы значений kotlin с MyBatis

Может ли кто-нибудь дать рекомендации по использованию встроенного класса kotlin () с MyBatis. У меня есть этот код: Картограф MyBatis: @Mapper interface EntityMapper { fun findEntitiesByStatuses(startId: Long, fetchLimit: FetchLimit, statuses: List…
1 ответ

Каков наилучший вариант использования для понимания Crossinline?

Я хотел понять, каков фактический вариант использования, когда мы хотим добавитьключевое слово для лямбды У меня есть следующий код, в котором я добавил crossinline. Я понимаю, что crossinline заставит любой вызывающий метод заставить его выполнять …
1 ответ

Принудительное встраивание встроенного класса Kotlin?

@LukasEder, этот вопрос больше связан с Котлином, вы, вероятно, можете пропустить его в пользу продолжения, более связанного с jOOQ, в https://github.com/jOOQ/jOOQ/issues/14972 :) Таким образом, часть устаревшей базы данных имеет довольно сложную ко…
1 ответ

Как использовать класс значений Kotlin из Java-кода?

У меня есть класс значений Kotlin: @JvmInline value class MyValueClass internal constructor(val rawValue: String) { companion object { @JvmName("myTestValueClass") fun String.testValueClass(): MyValueClass { return MyValueClass( rawValue = "test", )…
0 ответов

Котлин. Как сохранить свойство в классе значений?

Я пытаюсь создать класс стоимости для хранения денег. И мне нужно хранить формат частных денег. Вот мой код: @JvmInline value class Money internal constructor(val rawValue: String) { private val format: MoneyFormat = MoneyFormat.WHOLE И я получаю ош…