Я считаю, что Kotlin не имеет эквивалентной функции. В Kotlin нет литерала по умолчанию . Kotlin не инициализирует поля класса для любых значений по умолчанию, даже для примитивов (в отличие от Java, где, например, int
инициализируется в 0).
Вы также должны инициализировать свои поля в первичном конструкторе, или при объявлении, или сделать их обнуляемыми и оставить их неинициализированными (null).
Kotlin позволяет указывать значения по умолчанию для значений параметров в конструкторе, но это должен быть экземпляр конкретный класс, так что он не может принять во внимание шаблон c.
Вы можете использовать метод фабрики для генерации значения по умолчанию:
class Example<AType>(val factory: () -> AType): InterfaceOne<AType>, InterfaceTwo<AType> {
override var abcOne: AType = factory()
override var abcTwo: AType = factory()
fun test(uuid: AType) {
abcTwo = uuid
abcOne = factory()
println("abcOne=$abcOne")
println("abcTwo=$abcTwo")
}
}
fun main() {
val uuid = UUID.randomUUID()
val uuidExample = Example<UUID>({UUID.randomUUID()})
uuidExample.test(uuid)
val stringExample = Example<String>({"default"})
stringExample.test("two")
}