简体   繁体   English

在 Kotlin 中使用 setter 实现 Java getter 接口

[英]Implement Java getter interface with setter in Kotlin

I have a java interface:我有一个java接口:

    public interface TestInterface {
           String getName();
    }

I have a kotlin class:我有一个 kotlin 课程:

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

But if I also want the setter method of the name field,但是如果我也想要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
    }
}

What better way can I do?我还能有什么更好的方法? Thanks.谢谢。

You could use你可以用

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

Then you access it as x.name / x.name = ... from Kotlin, and x.getName() / x.setName(...) from Java.然后你从 Kotlin 以x.name / x.name = ...访问它,从 Java 中以x.getName() / x.setName(...)访问它。 Unfortunately, you also have getName_() in Java, but you don't have to use it.不幸的是,Java 中也有getName_() ,但您不必使用它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM