Rya*_*ndy 5 intellij-idea kotlin
我将 IntelliJ 与混合 Java/Kotlin 项目一起使用。在我的 Kotlin 文件之一中,我有以下属性:
override val value: String
get() {
return webElement.getAttribute("value")
}
Run Code Online (Sandbox Code Playgroud)
IntelliJ 的灯泡提供“将属性 getter 转换为初始值设定项”,这会将代码更改为:
override val value: String = webElement.getAttribute("value")
Run Code Online (Sandbox Code Playgroud)
对我来说,这似乎不是一个简单的重构,而是一个重大的代码更改。我认为正在发生的事情是:
在第一个版本中,value当我调用 时会检索该属性value。
在更改后的版本中,该value属性在构造类实例时立即设置,然后对该类实例永远不会更改。
但也许这更像是 C# 表达式主体成员,它使用 lambda 箭头=>而不是大括号,return但在其他方面的工作方式完全相同。
那么……是哪个?第二版代码何时初始化?
您对这些陈述的看法是正确的:
\n\n\n\n
\n- \n
在第一个版本中,当我调用 value 时,会检索 value 属性。
\n- \n
在更改后的版本中,在构造类实例时立即设置 value 属性,然后对该类实例永远不会更改。
\n
IntelliJ 的灯泡提供“将属性 getter 转换为初始化器”,因为它只是一个可用选项。灯泡仅突出显示您可以使用选定的代码片段执行的操作。
\nIntelliJ 不会试图告诉您“属性初始值设定项”和“属性获取器”是相同的。它告诉您的是,如果您愿意,可以将其中一种转换为另一种。
\n我同意这很令人困惑,特别是考虑到IntelliJ Idea 文档中的这段引用:
\n\n\n一旦 IDE 找到更改代码的方法,它就会在编辑器中当前行旁边显示一个黄色灯泡图标。通过单击此图标,您可以查看此代码单元可用的意图操作。意图操作涵盖从警告到优化建议的多种情况。您可以查看完整的意图列表并在“设置/首选项”对话框 \xe2\x8c\x98 中自定义它们。
\n
考虑到这一点,您的代码可能会被优化或出现警告。
\n\n\n第二版代码何时初始化?
\n
\n\n...当类实例被构造时立即。
\n
你是对的。
\n| 归档时间: |
|
| 查看次数: |
192 次 |
| 最近记录: |