java - 在 Kotlin 中使用 setter 实现 Java getter 接口
问题描述
我有一个java接口:
public interface TestInterface {
String getName();
}
我有一个科特林课程:
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
}
然后,您可以x.name
/x.name = ...
从 Kotlin 和x.getName()
/x.setName(...)
从 Java 访问它。不幸的是,您getName_()
在 Java 中也有,但您不必使用它。
推荐阅读
- r - 连接和变异因子 R
- sql - Excel 到 SSMS 中带有文本限定符的平面文件
- python - 通过比较日期删除 DataFrame 行
- python - 执行网格搜索时响应变量的数据类型错误
- circuit-sdk - 我们什么时候可以为机器人添加头像?
- visual-studio-2015 - 制作“EncryptSensitiveWithPassword”后,SSIS 包不会导入到 MSDB
- r - 如何解决 R 中 Sankey 的未定义列错误?
- php - 为什么服务器中的 php iconv() 函数抛出异常
- jquery - 如何在 ASP.NET Core 中使用 jQuery 库?
- r - 根据字符串模式将一列拆分为多列(在分隔符之前)