Реализовать Java интерфейс получения с установщиком в Kotlin - PullRequest
0 голосов
/ 28 марта 2020

У меня есть java интерфейс:

    public interface TestInterface {
           String getName();
    }

У меня есть kotlin класс:

class TestImpl(private var name: String = "name"): TestInterface {
    override fun getName(): String = name
}

Но если мне также нужен метод установки поля имени,

class TestImpl(private var name: String = "name"): TestInterface {
    override fun getName(): String = name
    // I don't want to write a setter like this
    fun setName(n: String) {
        this.name = n
    }
}

Какой лучший способ я могу сделать? Благодаря.

1 Ответ

0 голосов
/ 28 марта 2020

Вы можете использовать

class TestImpl(@get:JvmName("getName_") var name: String = "name"): TestInterface {
    override fun getName(): String = name
}

Тогда вы получите к нему доступ как x.name / x.name = ... с Kotlin и x.getName() / x.setName(...) с Java. К сожалению, у вас также есть getName_() в Java, но вам не нужно его использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...