java - 在 Kotlin 转换期间删除了 Setter/Getter
问题描述
在将基于 Java 的模型类转换为 Kotlin 后,我注意到我的 setter 和 getter 方法被删除了。曾经是什么,
private String apiKey;
public void setApiKey(String key) {
this.key = key;
}
public String getApiKey() {
return key;
}
成为
lateinit var apiKey: String
到底发生了什么?它是否删除了我的 setter 和 getter,然后将我的变量的访问修饰符从私有更改为公共?如果是这样,为什么以及如何做到这一点?Setter 和 getter 是 Java 抽象的一部分。Kotlin 不关心这个?
我仍在学习 Kotlin,我依靠内置的转换作为最佳实践的初学者指南。这只是一种你不在 Kotlin 中做 setter/getter 的情况吗?
解决方案
您的字段 + getter/setter 已转换为Kotlin Properties。因为字段 + getter/setter 非常常见,所以 Kotlin 对其提供了顶级支持。看起来您正在直接访问裸字段,但事实并非如此。Kotlin 对您隐藏了 getter 和 setter 的默认实现。在大多数情况下,我们只是想要一个 get 或 set 没有任何其他逻辑,所以我们不需要看到它。任何时候你apiKey
在 Kotlin 中访问,你都在通过 getter 或 setter。
至于为什么是公开的,属性在 Kotlin 中默认是公开的。如何提供您自己的 get/set 实现,以及如何更改它们的访问级别,可以在我上面链接到的页面上找到。
推荐阅读
- android - Android 同步适配器不适用于 sdk 24 及更高版本
- java - 如何使用电报 API 获取电报文档文件的公共链接?
- shell - 如何使用shell脚本格式化数字
- django - Py 3.6 // Django 2.1.4:访问用户配置文件神秘地将 user.is_authenticated 的状态更改为 True
- wikipedia - 桌面版维基百科是如何衍生其相关文章的?
- java - 如何在 JForm 中制作多行(或新行)JLabel
- apache-spark-sql - 如何根据具有相同 id 的另一行更新一行
- c - 检查嵌套循环中的矩阵值
- php - 如何使用具有多个值的另一个数组从数组中删除值?
- dart - 图像加载显示错误:图像资源服务捕获的异常