Kotlin &引用;将属性getter转换为初始值设定项";-但它们不是';这不是一回事,是吗?
我将IntelliJ用于一个混合Java/Kotlin项目。在我的一个Kotlin文件中,我有以下属性:Kotlin &引用;将属性getter转换为初始值设定项";-但它们不是';这不是一回事,是吗?,kotlin,intellij-idea,Kotlin,Intellij Idea,我将IntelliJ用于一个混合Java/Kotlin项目。在我的一个Kotlin文件中,我有以下属性: override val value: String get() { return webElement.getAttribute("value") } IntelliJ的灯泡提供“将属性getter转换为初始值设定项”,这将代码更改为: override val value: String = webElement.getAttribu
override val value: String
get() {
return webElement.getAttribute("value")
}
IntelliJ的灯泡提供“将属性getter转换为初始值设定项”,这将代码更改为:
override val value: String = webElement.getAttribute("value")
对我来说,这似乎不是一个简单的重构,而是一个重大的代码更改。我认为正在发生的是:
- 在第一个版本中,调用
时会检索value
属性value
- 在已更改的版本中,在构造类实例时立即设置
属性,然后再也不会更改该类实例值
=>
而不是大括号和返回
,但在其他方面工作方式完全相同
那么…是哪一个?代码的第二个版本何时初始化?关于以下语句,您是正确的:
- 在第一个版本中,调用value时检索value属性
- 在已更改的版本中,在构造类实例时立即设置value属性,然后再也不会更改该类实例的value属性
你说得对。这证实了我的怀疑,即我应该忽略这个建议。这是一个Selenium项目,因此预先初始化几乎总是错误的。Mulțumesc frumos ptr。阿胡托!很好的解释。IntelliJ建议您可以对代码执行的操作;它们不一定是你应该做的事情。(尽管它们经常值得考虑)许多保留了确切的含义——这是其中一个没有保留的含义。@RyanLundy,cu plăcere@吉兹,谢谢你。这样一个问题提醒我们,任何事情都不应该盲目地去做。但是将带有
return
的函数转换为表达式体是一样的,不是吗?您可以编写override val value:String get()=webElement.getAttribute(“value”)
,这相当于第一个版本。