【发布时间】:2018-07-24 12:52:54
【问题描述】:
这是一个假设性问题。
情况如下:
我正在从 Kotlin 文件中调用 Java 类的设置器来更改私有字段 x
javaFoo.setX(420)
IDE 建议将其更改为
javaFoo.x = 420
正常工作。
现在假设 setter 内部有一些复杂的功能,后来 Java 类中的 x 字段更改为 public 而不是 private。不会出现编译错误,但 Kotlin 调用会更改 x 的值,从而跳过 setter 中发生的其他内容,并且可能会被忽视而导致逻辑错误。因此我想知道:使用 Kotlin 属性访问语法设置 java 字段是否安全?
【问题讨论】:
-
@Belzebub IDE 建议将其更改为...您能否提供一个示例让我重现它?
-
我用的是android studio,只是创建一个带有私有字段和getter和setter的java类,然后从kotlin文件中调用setter
-
Java 库极不可能将一个字段从私有更改为公共,如果该字段也有一个 setter。此外,Kotlin 代码的行为只有在重新编译时才会改变。
-
如果“setter 内部有一些复杂的功能”,那就更不可能了。