繁体   English   中英

intellij中不推荐使用的ReplaceWith在Kotlin中如何工作?

[英]How does Deprecated ReplaceWith work for Kotlin in intellij?

我写了这段代码:

@Deprecated("Old stuff", ReplaceWith("test2"))
fun test1(i: Int) {
    println("old Int = $i")
}

fun test2(i: Int) {
    println("new Int = $i")
}

fun main(args: Array<String>) {
    test1(3)
}

由于某种原因,当我按Alt + Enter并单击“用test2替换”时,方法test1消失并且没有被替换,我在做什么错?

编辑:

它确实适用于类:

@Deprecated("Old stuff", ReplaceWith("Test2"))
class Test1
class Test2

fun main(args: Array<String>) {
    val a = Test1()
}

您需要告诉您如何精确地替换它...虽然我不知道为什么它被完全删除了,但我将向您展示我的意思:

如果要改用以下内容:

@Deprecated("Old stuff", ReplaceWith("test2(i)"))

它将正确替换您对test2(5) test1(5)调用。

还要注意,有时如果不清楚应该进行哪个替换,则可能还需要添加软件包名称,例如:

@Deprecated("Old stuff", ReplaceWith("org.example.test2(i)"))
// or just use:
@Deprecated("Old stuff", ReplaceWith("test2(i)", /* here come the imports */ "org.example.test2"))

如果需要,还可以在替换中使用静态值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM