Как я могу конвертировать java.lang.String в kotlin.String?когда нажимаете "конвертировать файл Java в файл Kotlin" - PullRequest
0 голосов
/ 12 декабря 2018

когда я нажимаю «преобразовать файл Java в kotlin», я обнаружил тип «java.lang.String», преобразующий в «kotlin.String». Но он может быть нулевым и выдает исключение: «java.lang.IllegalArgumentException: указанный параметр»как ненулевое значение равно нулю ".

например: Мой код Java:

public void test(String arg) {
    if (!TextUtils.isEmpty(arg)) {
        Log.d("test", arg);
    }
}

После преобразования файла Java в файл Kotlin:

fun test(arg: String) {
    if (!TextUtils.isEmpty(arg)) {
        Log.d("test", arg)
    }
}

Мой ожидаемый типдля параметра «arg» есть «String?»вместо «String».

Хотя я понял, что конвертеру было очень трудно определить, должны ли типы обнуляться или нет, я все еще задавался вопросом, есть ли способ настроить это поведение.lang.String "to" kotlin.String? ".

1 Ответ

0 голосов
/ 12 декабря 2018

Существует разница между String в Java и String в Kotlin.Разница может быть не столь очевидной, но:

  • String в Java означает: все строки, включая null.
  • String в Kotlin означает: все строки, исключая null

Вы пытаетесь присвоить нулевое значение для строки Kotlin, котораявы определили как ненулевое значение (потому что вы определили его только как String).Если вы хотите, чтобы он также принимал нулевые значения, вам нужно изменить тип с String на String?, включая знак вопроса.Это говорит Kotlin, что String также может быть нулевым.

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