zaleslaw
05/25/2021, 10:45 AMcaffeine
07/12/2021, 11:19 PMinterface I1
class C1:I1
class C2
Нужно реализовать функцию, которая принимает два класса (KClass<out Any>
). Функция должна вернуть является ли один класс предком другого класса.
На данном примере результат будет такой
isChild(I1::class,C1:class) = true
isChild(I1::class, C2::class) = false
Сделать это нужно в рамках kotlin/common.
Лучшее что нашел - это KClass.isInstance(...)
, но экземпляров классов у меня на руках нет :(
Подскажите пожалуйстаEugen Martynov
08/17/2021, 8:24 AMruwinmike
08/24/2021, 4:22 PMprivate fun test() {
val string = """{ "type": "a", "value": "Hello"}"""
val result = Json.decodeFromString(Test.serializer(), string)
println(">>> result $result")
}
@Serializable
sealed class Test {
abstract val type: String
@SerialName("a")
@Serializable
data class A(
override val type: String,
val value: String
) : Test()
}
но можно переопределить type на другое значение? Пытаюсь вот так вот
private fun test() {
val string = """{ "fieldType": "a", "value": "Hello"}"""
val result = Json.decodeFromString(Test.serializer(), string)
println(">>> result $result")
}
@Serializable
sealed class Test {
@SerialName("fieldType")
abstract val type: String
@SerialName("a")
@Serializable
data class A(
override val type: String,
val value: String
) : Test()
}
Но получаю ошибку Polymorphic serializer was not found for missing class discriminator ('null')
Alex
08/26/2021, 2:29 PMvalue
классы работают в Exposed?umar
08/31/2021, 6:21 PMcaffeine
09/24/2021, 9:00 PMzaleslaw
10/04/2021, 6:41 PMEugen Martynov
11/04/2021, 7:49 AMEugen Martynov
11/05/2021, 3:48 PMcaffeine
12/04/2021, 2:50 PMcaffeine
12/04/2021, 2:51 PMVlad Zotov
12/09/2021, 3:18 PMVasily Scherbakov
12/10/2021, 8:18 PMDima Avdeev
12/21/2021, 7:39 PMEugen Martynov
12/23/2021, 4:02 PMjava.lang.AbstractMethodError
Eugen Martynov
01/12/2022, 5:23 PMinsurance_type
@kotlinx.serialization.Serializable
@SerialName("insurance_type")
sealed class InsuranceInfo : Serializable {
@kotlinx.serialization.Serializable
@SerialName("public")
data class Public(
@SerialName("company_name") val companyName: String? = null,
@SerialName("company_id") val companyId: String,
@SerialName("insurance_number") val insuranceNumber: String,
@SerialName("insurance_end_date") @Contextual val insuranceEndDate: LocalDate,
@SerialName("insurance_status") val insuranceStatus: InsuranceStatus
) : InsuranceInfo(), Serializable
@kotlinx.serialization.Serializable
@SerialName("private")
object Private : InsuranceInfo(), Serializable
@kotlinx.serialization.Serializable
@SerialName("self-paid")
object SelfPaid : InsuranceInfo(), Serializable
}
Никак не нащупаю решения и не могу найти решения в лоб открыть объект, записать елемент дескриминатора, записать все поля силд класса, закрыть объект
caffeine
03/18/2022, 1:08 PMexpect value class .... {
var value: Boolean
}
В actual
я использую get
и set
для этого поля, однако это не мешает компилятору ругаться на этот expect
класс:
Inline property cannot have backing field
и
Inline class cannot have properties with backing fields
Как это исправить?caffeine
03/18/2022, 1:09 PMexpect
писать типа того
var value: Boolean
get
set
не помогаетcaffeine
03/18/2022, 1:11 PMvalue
на getValue
и setValue
, но все же было бы здорово разобраться именно с параметромaleksey.tomin
04/05/2022, 3:49 AMDmitry
08/06/2022, 11:58 AMqwert_ukg
12/09/2022, 9:47 AMqwert_ukg
12/09/2022, 9:47 AMqwert_ukg
12/09/2022, 9:47 AMNikitenko Gleb
02/10/2023, 10:55 AMmoonsweel
04/14/2023, 7:57 AMKClass::isSealed
возвращает true
, для релизных сборок false
. Кто нибудь сталкивался и/или знает, как починить? 🙂caffeine
06/20/2023, 4:15 PM// объект конфигурации
object Config
// класс правила
@Configuration(Configuration::class)
class Rule
Мой плагин ищет классы с аннотации Configuration
интерпритируя их как "правила" и добавляет в указанную конфигурацию. Добавление происходит путём создания init
блока в классе-конфигурации, а также вызовом спец. функции в созданном init
блоке.
Теперь представьте, что я закоментировал @Configuration(Configuration::class)
у класса Rule
. Менялся только класс Rule
. Config
ко мне в плагин не попадёт.
Я честно меняю IR класса Config
, но это ни как не действует - в собранном приложении Config
работает без моих последних изменений.
Есть способ явно указать компилятору, что IR такого-то класса менялся?
При выключении инкрементальной сборки все начинает работать.
Подскажите пожалуйста.altavir
07/17/2023, 12:36 PMIceFire
10/10/2024, 12:42 PM