java - 在 Kotlin 中使用 setter 实现 Java getter 接口(interface)

标签 java kotlin

我有一个java接口(interface):

    public interface TestInterface {
           String getName();
    }

我有一个 kotlin 类(class):

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

但是如果我也想要name字段的setter方法,

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
    }
}

我还能采取什么更好的方法?谢谢。

最佳答案

你可以使用

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

然后您可以从 Kotlin 中以 x.name/x.name = ... 的形式访问它,并且 x.getName()/来自 Java 的 x.setName(...)。不幸的是,您在 Java 中也有 getName_(),但您不必使用它。

关于java - 在 Kotlin 中使用 setter 实现 Java getter 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60901399/

相关文章:

java - 如何获取当前周和月的第一天?

java - 比较 2 个正则表达式字符串

java - 在Java中修改文件的特定行

Kotlin 范围 : Why isn't there a `downTo` variant to exclude last item like `until` ?

java - 递归函数的空间复杂度估计

java - 指定适用于平板电脑和手机的 apk

android - Gradle找不到kotlin编译器版本

android - 如何在 Android Studio 中设置数据绑定(bind)?

android - 为 kotlin 扩展函数的基础对象附加上下文

java - 尝试设置一个抽象的监听器