Генерация класса интерфейса Kotlin из Java порождает ошибки - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть класс интерфейса Java, который был преобразован в Kotlin.При преобразовании он создает много ошибок в других файлах, поскольку используются геттеры и сеттеры.

Класс интерфейса Java:

public interface ValueFormElement extends BaseElement {


    Pair<Boolean, Hashtable<String,String>> getValue();

    String getName();

    void setName(String name);
    void setValue(String value);


}

При конвертации он удаляет геттер, и я используюГеттер в других классах.Это сгенерированный класс Kotlin

interface ValueFormElement : BaseElement {


    val value: Pair<Boolean, Hashtable<String, String>>

    var name: String
    fun setValue(value: String)


}

Если у кого-то есть способ реализовать или выполнить его с помощью get и set без влияния на остальную часть кода, пожалуйста, покажите мне или направьте меня.

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

Java-код, использующий этот интерфейс Kotlin, все равно будет видеть геттеры и сеттеры, как и раньше, поэтому они не будут затронуты.Только код Котлин будет.И если вы не готовы исправить их в данный момент, я бы вообще не стал конвертировать интерфейс в Kotlin.

Пока можно написать

fun getName(): String

и т. Д.в интерфейсе Kotlin это сделает его менее пригодным для использования, чем версия Java.А именно, Котлин не позволит вам написать x.value или x.name = ....

0 голосов
/ 29 апреля 2019

Используя var, оба метода get / set будут сгенерированы для использования в Java.Однако для val предоставляется только метод get (поскольку val подразумевает только чтение).Вы можете просто объединить до двух var с, чтобы соответствовать реализации Java:

interface ValueFormElement : BaseElement {
  var value: Pair<Boolean, Hashtable<String, String>>
  var name: String
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...