Использование классов Kotlin Value в JavaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Использование классов Kotlin Value в Java

Сообщение Anonymous »

У нас есть два проекта, и один из них публикует пакет, импортированный Java.
В котлине это класс значений, например

Код: Выделить всё

@JvmInline
value class CountryId(private val id: UUID) {
override fun toString(): String = id.toString()
companion object { fun empty(): CountryId = CountryId(EMPTY_UUID) }
}
В Java мы не можем увидеть конструктор или фактически создать экземпляр этого класса. Я также пытался создать для их создания фабрику в Kotlin

Код: Выделить всё

class IdentifierFactory
{
companion object {
fun buildString(): String {
return "hello"
}

fun buildCountry(): CountryId {
return CountryId.empty()
}
}
}
В Java я могу вызвать IdentifierFactory.Companion.buildString(), и это будет работать, но IdentifierFactory.Companion.buildCountry() даже не существует.
Неужели в Java так плохо с классами Value?
ps. Я также пытался использовать @JvmStatic, но безуспешно
pps. Если я декомпилирую байт-код Kotlin со стороны Java и получу CountryId.decompiled.java, вот как будет выглядеть конструктор

Код: Выделить всё

// $FF: synthetic method
private CountryId(UUID id) {
Intrinsics.checkNotNullParameter(id, "id");
super();
this.id = id;
}
пппс. Котлин 1.5.21 и Java 12

Подробнее здесь: https://stackoverflow.com/questions/699 ... es-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»