Как работает устаревшая замена с Kotlin in intellij? - PullRequest
0 голосов
/ 06 сентября 2018

Я написал этот код:

@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 исчезает и не заменяется, что я делаю не так?

Edit:

Это работает для классов, хотя:

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

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

1 Ответ

0 голосов
/ 06 сентября 2018

Вы должны сказать, как именно его нужно заменить ... Хотя я не знаю, почему он был просто полностью удален, я покажу вам, что я имею в виду:

Если вы используете вместо этого следующее:

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

это заменит ваш test1(5) вызов test2(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"))

Вы также можете использовать статические значения при замене, если это то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...